我是 ReactJS 的新手。ReactJS 似乎完全接管了渲染 DOM 节点的责任,并且不期望任何其他干扰甚至 jQuery。它带来了许多方便的 jQuery 插件在 React 中无法使用的事实。其中一些插件实现了等效的 React 组件,但还远远不够。有没有一种优雅的方式将这两件事结合在一起?
ReactJS 和 jQuery 是互斥的吗?
快速回答是否定的,没有优雅的方式来组合它们并使您的应用程序在不使用丑陋的黑客的情况下工作。
与 jQuery 相比,ReactJS 使用了根本不同的逻辑。在使用 ReactJS 时,您真的不想弄乱 DOM,而这正是 jQuery 所做的。
但是,如果您在同一页面上分别使用两个库,则有一些方法。您只能将 ReactJS 用作独立的自包含组件,并且不要将它们与 jQuery 混合使用(不要尝试以任何方式使用 jQuery 操作该组件,即使监听事件也很棘手),因为它们可以完全生活在不同的世界中很高兴,但这有点限制了你可以用 React 做的事情。
我实际上曾在一个大型遗留项目中工作,我们将组件从 jQuery 缓慢迁移到 ReactJS,一个组件一个组件,但这是一个缓慢的过程,如果一切都在 ReactJS 中,有些事情可以更轻松地完成。
如果您需要将它们捆绑在一起,那么我的答案仍然是否定的,您不能优雅地做到这一点。
但这也不意味着它不能完成,有很多方法可以使它工作,但是它会给您的应用程序带来意想不到的行为,您将不得不创建您在生产中真的不想做的变通方法。
我建议你权衡你需要更多的东西,ReactJS 或 jQuery 组件,如果你坚持使用一个或另一个,你会花更多的时间来开发什么。
虽然我同意@Ales 的回答,但我想补充一点细微差别:
将 jQuery 和 React 混合用于 DOM 操作确实是一个非常糟糕的主意。
jQuery 有一些非常诱人的操作 DOM 的速记代码。当与react混合时,这些是灾难的秘诀。
然而,jQuery 也有其他东西,与 DOM 操作无关。那些 jQuery 部分实际上与 react 混合得很好。
一个典型的例子是 jQuery 对 ajax 调用和 JSON 的处理。这些 jQuery 实际上与 react 混合得很好。
React 通过数据流将组件构建为一棵树。如果组件的层次结构做得好,我认为你不需要实现JQuery。
Github 中已经有很多组件已经在 React 中完成了,可以做一些了不起的事情。因此,如果你使用它们,你不会失去 ReactJS 的数据流感。