即使我们需要在react-redux中只渲染一个组件,也会渲染所有组件

时间:2016-07-05 04:29:42

标签: reactjs react-native rendering redux react-redux

我不确定它是默认行为还是redux或其他什么,但我发现在调度一个动作时,这个动作遍历所有reducers(没关系)但是它还会调用每个reducer的连接侦听器,进一步导致渲染其组成部分。这意味着在每个调度中,应用程序状态树内的所有组件都会被渲染。这是故意由redux完成还是我做了一些冤屈。 帮我澄清一下这件事。

2 个答案:

答案 0 :(得分:2)

在Redux中,你的状态是全局的,由redux处理,每当你发出一个动作时,你只是设置全局状态。你的容器组件将收到新状态,reducer将对它们起作用,但是你的组件不会被重新渲染,因为之前的状态和下一个状态是相同的。

只会渲染那些mapStatetoProps导致结果不同的组件

答案 1 :(得分:2)

这种行为完全没问题。请参阅React Docs了解虚拟DOM 概念:

  

React使用虚拟DOM ,它是浏览器中呈现的DOM子树的描述符。这种并行表示允许React避免创建DOM节点并访问现有节点,这比JavaScript对象上的操作要慢。当组件的支持或状态发生变化时,React通过构造新的虚拟DOM并将其与旧虚拟DOM进行比较来确定是否需要实际的DOM更新。只有在它们不相等的情况下,React才会协调DOM,尽可能少地应用突变。

因此,您不必担心每次发送操作时都会重新呈现每个组件。