【发布时间】:2017-02-24 16:22:29
【问题描述】:
我试图了解 redux 的连接是如何工作的,我想知道它是否:
- 每次状态随新道具发生变化时都会创建一个新组件 或
- 更新现有组件的状态
如果是后者,这不违背 React 的不可变道具哲学吗? 它是如何更新道具的?
【问题讨论】:
标签: javascript reactjs redux
我试图了解 redux 的连接是如何工作的,我想知道它是否:
如果是后者,这不违背 React 的不可变道具哲学吗? 它是如何更新道具的?
【问题讨论】:
标签: javascript reactjs redux
React 的不可变 props 理念意味着您不应该从组件内部更新 props。您可以将新的属性值从父组件传递给组件。这就是为什么存在 componentWillReceiveProps 方法的原因。
基本上,react 组件接收道具并呈现 HTML。组件可以使用本地状态,但如果你使用 Redux,这通常是不需要的。 Redux 在单个状态对象中管理所有状态,并使用 connect 方法可以将全局 Redux 状态的一部分“连接”到反应组件。然后它将作为该组件内的道具可用。
所以回答你的问题:答案 1 和 2 都不正确。 当使用 connect 将一个状态连接到您的组件时,它将将该状态作为道具传递。您的组件将没有状态(除非您编写自己的本地状态),只有道具。如果 redux 状态的相应部分发生变化,这些 props 会更新。
【讨论】:
componentWillReceiveProps()2)shouldComponentUpdate()3)componentWillUpdate()4)render()5)componentDidUpdate()您只需要基本的渲染方法组件。