React App没有状态和道具

时间:2018-02-04 14:34:54

标签: javascript reactjs frontend

我想知道它是否与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();
}

当然,这只是一个例子,我的应用程序要复杂得多。

2 个答案:

答案 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操作,并可能会降低应用程序的速度。