如何回应redux中特定状态的变化?

时间:2015-11-23 01:35:54

标签: redux

现在,组件只能知道全局state已更改,但无法确定实际更改了哪个状态。这是我的情景:

Component Root --- very deep --- Component Leaf

Component Leaf在组件层次结构中非常深,它会触发操作,更改全局状态,Component Root想要更改某些内部状态以响应此操作。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

从概念上讲,您会发现这不是正确的思考方式:

  

Component Root想要更改一些内部状态以响应此操作

使用Redux和React时,从商店派生的任何内容都应该是 props 而不是状态。

首先,将上述状态转换为道具。

其次,使用connect中的react-redux函数设置这些道具。

您可能在Redux文档中看到过类似的内容:

// Take the store state and return the props for your root component
function mapStateToProps(state) {
    return state;
}

export default connect(mapStateToProps)(Root);

如何定义mapStateToProps函数由您决定。您可以选择使用全部或部分州。

最后,将层次结构中的相关道具传递给Leaf节点。

不要过分担心该州的哪个部分发生了变化。 React和Redux的工作是将渲染仅限于已更改的组件。只要确保避免改变reducer中的状态。