您误解了save组件的用途。save组件的目标不是返回交互式React组件,而是返回一些可以转换为静态HTML并以字符串形式保存在数据库中的内容。
因为只有HTML被保存,所以您的责任是在前端加载javascript,找到该HTML并将其转换为Swiper滑块。
因此,您不应尝试在保存组件中直接或间接通过库执行以下任何操作:
事件侦听器(event listeners)的反应状态(react state)回调/效果/HTTP请求等甚至可以在未发生保存时运行保存组件,例如通过将保存的块与保存组件进行比较来验证块时。
因此,考虑到这一点,使用<Swiper>
或<SwiperSlide>
此处为组件。
相反,请遵循Swiper文档并生成实际的HTML:
<!-- Slider main container -->
<div class="swiper">
<!-- Additional required wrapper -->
<div class="swiper-wrapper">
<!-- Slides -->
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
...
</div>
<!-- If we need pagination -->
<div class="swiper-pagination"></div>
<!-- If we need navigation buttons -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- If we need scrollbar -->
<div class="swiper-scrollbar"></div>
</div>
https://swiperjs.com/get-started#add-swiper-html-layout
针对JSX进行调整并以这种方式保存。
另一方面,Swiper库检测幻灯片的方式<Swiper>
组件是通过检查虚拟dom并查找类型<SwiperSlide>
. 这意味着如果使用滑块,则无法找到幻灯片。这意味着在古腾堡不可能有用户可配置的幻灯片,因为用于提供块信息的高阶组件。这种方式不可能有嵌套块。Swiper会将子块解释为附加在滑块之后的附加HTML,即使它们是幻灯片或<SwiperSlide>
组件。