Redux如何将状态传递给mapStateToProps?

时间:2016-08-19 18:12:17

标签: javascript reactjs redux react-redux

我试图了解React和Redux是如何工作的,我正在查看来自this example project的FuelSavingsPage.js。我在var theCheckboxes = $(".pricing-levels-3 input[type='checkbox']"); theCheckboxes.click(function() { if (theCheckboxes.filter(":checked").length > 3) $(this).removeAttr("checked"); }); 中找到actions来自哪里,但我不明白mapDispatchToProps如何传递给statemapStateToProps如何传递到dispatch。这是怎么回事?

mapDispatchToProps

2 个答案:

答案 0 :(得分:7)

connect()功能中的所有魔法。此函数调用mapStateToProps并将state作为道具传递。 mapDispatchToPropsdispatch方法也会发生同样的情况。您可以使用以下伪代码来想象:

function connect(mapStateToProps, mapDispatchToProps) {
    mapStateToProps(store.getState()) // just simple callback
    mapDispatchToProps(store.dispatch) // the same
}

答案 1 :(得分:6)

React-Redux connect函数生成一个订阅商店的包装器组件。该包装器组件在每次调度操作后调用store.getState(),使用当前存储状态调用提供的mapStateToProps函数,并在必要时使用商店的mapDispatchToProps函数调用dispatch。 / p> 丹一段时间写了connect的简化版,以说明它使用的一般方法。见https://gist.github.com/gaearon/1d19088790e70ac32ea636c025ba424e