是否可以向React的Virtual DOM添加元素,但是使用jQuery追加到真正的DOM?

时间:2014-03-29 00:09:47

标签: jquery reactjs

我正在使用一个名为gridalicious的jquery插件以类似于拼贴的网格样式显示我的图像,这在第一次渲染中效果很好,当我在componentDidUpdate方法中调用它时,这会将样式应用于我的元素和正确显示它们......

现在的问题是,当我需要更新图库并添加新元素时,gridalicious包含自己的方法来添加新元素,避免更改先前加载的图像的位置和大小....

$('#append').click(function(){
  $("#example3").gridalicious('append', makeboxes());
});

我最初的想法是将这些图像添加到我的状态,React会(并且实际上)聪明地注意到只需要附加一些图像,然后再次运行库来自定义大小和位置。麻烦的是,当我这样做时,我以前的图像被修改为库并改变它们的大小,外观甚至位置...通知比网格库应用一些算法来确定哪些是最佳尺寸,位置和排序顺序图像和显示它们获得拼贴效果......

我想我需要避免反应再次渲染库(使用shouldComponentUpdate我猜)并使用jquery lib添加我的新组件,我需要反应的绑定,因为当我点击图像,信息和其他细节出现了,所以我真的需要反应的力量,但我需要找到一种方法来集成两个库,谢谢!! ...

刚才该网站似乎已经关闭了我希望很快就会修好suprb.com/apps/gridalicious/非常感谢!!! ...

2 个答案:

答案 0 :(得分:2)

这些交互必须在React之外处理。当我必须做这些事情时,我使用生命周期方法componentDidMountcomponentDidUpdate来使用jQuery操作DOM。

答案 1 :(得分:0)

不要在componentDidMount中的虚拟DOM之外附加gridalicious,而是可以在React Component中包含gridalicious,如此jQuery UI interop example中所示。