我想知道它是否与React原则完全一致。我制作了一个没有状态和prop的React应用程序。我只在componentDidMount中放置纯javascript,例如
componentDidMount(){
const first = document.getElementById('first');
const second = document.getElementById('second');
function funk(){
console.log(first.innerHTML);
second.innerHTML = "Arrr";
}
funk();
}
当然,这只是一个例子,我的应用程序要复杂得多。
答案 0 :(得分:5)
从技术上讲,你可以(你可能已经知道) 你应该这样做吗?一个大而发光的 NO!。
通过这种直接定位DOM
的方法,您绕过并错过了Reconciliation and The Diffing Algorithm所带来的大部分善意。
如果你真的(真的)需要定位DOM
,你可以使用反应ref API。
你可以在docs中看到它应该谨慎使用:
不要过度使用参考文献
你的第一个倾向可能是使用refs“make 事情发生在你的应用程序中。如果是这种情况,请花一点时间 更关键地考虑一下国家应该拥有的地方 组件层次结构通常情况下,显然适当的地方 “拥有”该状态在层次结构中处于更高级别。见 提升状态向上指导示例。
答案 1 :(得分:0)
是和否
是,您可以在某些情况下使用它来利用复杂的jQuery插件集成反应作为项目的一部分等等......
我知道有很多这种方法的仇敌,但我们也应该了解业务,如果有可能实现目标而不花费40-80小时自己编码 - 去吧。
否,你不应该在组件实时循环方法中进行任何DOM操作,除非你非常善于反应并完全理解这个库内部的工作方式。 以这种方式更改DOM很可能会导致性能问题,因为您的组件将无法使用shadow DOM,因此,您的组件将在每次更改后执行DOM操作,并可能会降低应用程序的速度。