有人可以向我解释为什么 Redux 有两个函数 mapStateToProps
和 mapDispatchToProps
这两个函数都添加到容器的原因是什么?
定义:
mapStateToProps是一个实用程序,可以帮助您的组件获得更新状态(由其他一些组件更新)mapDispatchToProps是一个实用程序,它将帮助您的组件触发一个动作事件(可能导致更改应用程序状态的调度操作)
为什么Redux团队选择将其分解为两个映射函数 - 即为什么不只有一个函数mapToProps(state,dispatch,props)同时执行这两个函数?
-
这只是关注点的分离/更容易理解的原因吗?
-
是否因为
mapDispatchToProps
中重新绑定的性能问题为每次更改创建了新功能?具有独立的动作创作绑定功能将有助于避免这项额外的工作?考虑到每个状态变化都会调用mapStateToProps
.
Example:
const increaseAction = { type: 'increase' }
class Counter extends Component {
render() {
const { value, onIncreaseClick } = this.props
return (
<div>
<span>{value}</span>
<button onClick={onIncreaseClick}>Increase</button>
</div>
)
}
}
function mapDispatchToProps(dispatch) {
return {
onIncreaseClick: () => dispatch(increaseAction)
}
}
1 回答
@Andrey Prokhorov是对的,你问的很有趣 . 我今天早些时候发现自己陷入了github问题的困境,并发现了这个问题(Add state as the third parameter to mapDispatchToProps) . 虽然 Headers 似乎没有关系,但如果你仔细阅读评论,gaearon(react-redux的创建者)解释说:
我还链接到了gaearon与react-redux相关联的第一个问题,在那里讨论了它(它确实是#ith在github上为react-redux排名第一) . 我相信他们可能会改变它你描述的方式,但我认为gaearon的评论总结了它: