2017-02-24 133 views
0

我想了解如何终极版” CONNECT作品我在想,如果它:终极版连接和mapStateToProps

  1. 创建一个新的组件,每次有新道具 或
  2. 更新现有组件的状态变化状态

如果是后者,这是否违背了React的不变道具哲学? 它如何更新道具?

回答

4

React的不变道具哲学意味着你不应该从组件内部更新道具。您可以将新属性值传递给父组件的组件。这就是为什么存在componentWillReceiveProps方法的原因。

基本上反应组件接收道具并呈现HTML。组件可以使用本地状态,但如果使用Redux,通常不需要。 Redux管理单个状态对象中的所有状态,并使用connect方法将全局Redux状态的一部分“连接”到反应组件。它将作为该组件内的道具提供。

所以要回答你的问题:答案1和2都不是正确的。 当使用连接将一个状态连接到你的组件时,它将作为道具传递该状态。你的组件将没有状态(除非你写自己的本地状态),只有道具。如果redux状态的相应部分发生变化,这些道具会更新。

+0

那你快速回答。因此,由于我将React集成到现有的应用程序中,并且Redux目前不是一种选择,因此,从组件外部模拟更新道具的正确方法是什么? –

+0

无论你渲染一个反应组件,你都可以传递动态道具(即从一个可变的道具)。 ) 1)'componentWillReceiveProps()' 2)'shouldComponentUpdate()' 3)'componentWillUpdate()' 4)'渲染(':每当道具更改组件的下列方法将调用顺序 5)'componentDidUpdate()' 您只需要基本组件的渲染方法。 –

+0

如果我正确理解你,你在渲染方法中“创建一个新组件”,并且如果它是现有的组件,反应会简单地更新它的道具? –