Redux:嵌套组件可以调用动作方法吗?

时间:2017-10-08 08:16:49

标签: javascript redux nested react-redux

我有一个页面,其反应结构大致如下:

<App>
    <Sidebar>
        <MapLayers>
            <Layer id="1" />
            <Layer id="2" />
        </MapLayers>
    </Sidebar>
    <Map />
</App>

现在我的组件中包含了所有状态。但这使我的代码变得混乱而难以维护。 我当时希望使用Redux来解决这个状态管理问题。我知道我们可以使用Provider,如果我是正确的,连接到商店并将道具传递给子组件。

我的问题是,如果我的Layer组件中的某个UI元素(例如下拉列表会引发更改事件),我希望修改我的存储状态,而不是将此事件冒泡到Main组件然后执行操作,可以嵌套组件直接调用action方法在store中做一些操作吗?

1 个答案:

答案 0 :(得分:1)

是的,您需要做的是将<App />包裹在<Provider/>中,然后使用mapStateToProps(连接属性)将最内层组件与redux状态连接起来在你的组件的道具状态)和mapDispatchToProps(这使你的行动能够将动作分配给减速器以引起状态变化)