javascript – 可以将所有这些jQuery的东西都放到React.js DOM树上吗?

前端之家收集整理的这篇文章主要介绍了javascript – 可以将所有这些jQuery的东西都放到React.js DOM树上吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近开始使用 ReactFlux作为我的一个项目,我也在使用jQuery,用于GUI的某些部分.通过jQuery,我有时会将CSS类和样式甚至DOM节点添加到由React创建和更新的元素中.这似乎工作得很好. React不会抱怨,并且,当render()重新运行时,React不会修改类和样式以及已添加到反应根内部某处的DOM节点.

>我可以依赖React忽略我在React树中与React DOM节点并排添加的DOM节点吗? – 我知道如果React决定删除我插入的节点,将删除非React节点.这对我很好.但我确实想知道React某一天是否会对这些不是由React管理的额外节点感到不安,并拒绝工作?
>如果React不管理DOM节点的任何样式(我没有向render()生成的节点添加任何样式属性),那么我可以通过jQuery安全地将自己的样式添加到这个DOM节点吗?例如.在jQuery中通过#id查找节点,然后设置其宽度.
>如果React生成的DOM节点上没有className,那么我可以安全地通过jQuery添加删除该节点的类吗? (例如,在鼠标悬停时添加一个类.)

我目前正在做这些可能奇怪的事情的一个原因是,我有一些jQuery汤遗留代码,我现在不想移植到React.另一个是我正在使用一些有时在React树中添加DOM节点的jQuery插件.

解决方法

听起来不错,但是您需要遵循一些规则(并且您只能使用遵循这些规则的插件):

>不要删除/替换/移动React创建的任何节点
>不要为React节点创建兄弟节点,尤其是在反应节点之间或之前
>创建节点,添加事件侦听器,修改componentDidMount和/或componentDidUpdate中的dom
>在componentWillUnmount中删除节点,删除事件侦听器
>在componentDidMount中手动创建和附加节点以传递给jQuery插件
>不要在反应组件之外修改DOM
>确实将一个回调传递给setState(参数2),以便在做出反应后做一些事情(但更喜欢componentDidUpdate)

对于手动安装的React组件(通过React.render)

>不要将react组件作为没有生命周期挂钩的插件控制元素的子项挂载
>在从DOM中删除父级之前,请使用React.unmountComponentAtNode清理React组件
>如果在安装组件后必须执行某些操作,请将回调传递给React.render(参数3)

如果我错过任何内容,请编辑问题,或者包含您认为无效的规则.

猜你在找的jQuery相关文章