在ReactJs中更新组件时更新jQuery slick carousel
Updating jQuery slick carousel on component update in ReactJs
我刚开始使用ReactJs,我可以看出它真的很棒。但我遇到了一个问题,我似乎不知道如何解决这个问题。
我正在尝试实现一个自动搜索过滤组件,该组件根据项目名称过滤项目。在这里,我以电影和电影标题为例。搜索是有效的,但当我试图在混合中添加一些jQuery时,我在过滤搜索结果时遇到了这个错误:
不变冲突:ReactMount:具有相同data-reactid
的两个有效但不相等的节点
具有相同data-reactid
的节点是由jQuery插件创建的节点,即Slick carousel。
在这里你可以自己试试:
Plunker
只要您对script.jsx
的第45行发表评论,您就可以看到我的搜索功能正在发挥作用。
问题是,正如React文档中所建议的那样,jQuery插件加载在componentDidMount
中,但当DOM发生更改时,一切都会变得一团糟,因为函数只调用一次。当数据更新时,我需要重新加载jQuery插件,但我不知道确切的时间、地点和方式。
我尝试使用componentDidUpdate
,但它没有按预期工作。它在页面加载时也不会被调用。
非常感谢!
最简单的解决方案可能是这样做:
componentDidMount: function(){
$(this.getDOMNode()).slick();
},
componentWillUpdate: function(){
$(this.getDOMNode()).slick('unslick'); //remove the added dom elements
},
componentDidUpdate: function(){
$(this.getDOMNode()).slick();
},
componentWillUnmount: function(){
$(this.getDOMNode()).slick('unslick');
},
因为即使react没有抛出错误,这也是向光滑的旋转木马添加/删除元素的最简单方法。这有多可行取决于你计划渲染多少元素,以及光滑旋转木马的性能。
相关文章:
- jQuery-更新jQuery.ajax().done()中点击的图像
- 如何更新jQuery Mobile全局弹出窗口的位置
- 更新jquery后文件上传不起作用
- 在ReactJs中更新组件时更新jQuery slick carousel
- 拖动事件后更新jQuery中jqxListBox的列表
- 如何停止将值追加到仅更新 jQuery 中的值
- 无法多次更新 jQuery 中 Ajax 调用的全局变量
- 使用 google api 地址更新 jQuery jqgrid 列
- 使用 Angular JS 动态更新 jQuery UI 属性的最佳方法
- 更新 jQuery 中的全局变量
- 如何在键入时更新 jQuery 值
- 尝试使用 mysql 和 php 更新 jquery 变量
- 更新 jQuery UI 工具提示上的数字
- 动态更新jquery中的iframe内容
- 更新jquery插件选项而不刷新页面
- 如何使用客户端数据更新jQuery.dataTables中的所有数据
- 以编程方式根据值更新jQuery滑块的位置
- ASP.NET:如何更新JQuery或Javascript中的隐藏字段
- 更新:jquery对话框模式单选按钮未选择ajax
- 在Ajax调用期间更新jQuery项