假设一个无状态的,功能UserProfile
组件,它显示给定网址的用户数据。假设它被connect(mapStateToProps, mapDispatchToProps)(UserProfile)
包裹。最后,假设减速器减少为state.userProfile
。每当网址发生变化时,我都需要重新初始化state.userProfile
,因此我想到的解决方案就是在mapDispatchToProps中这样做:
function mapDispatchToProps(dispatch, ownProps) {
dispatch(fetchUser(ownProps.userId))
return {
...
}
}
如果thunked fetchUser通过与当前状态进行比较而忽略重复调用,这是否可以接受?或者是否存在与此地图功能立即调用调度相关的问题?
答案 0 :(得分:5)
这是不受支持的,可以随时中断
mapDispatchToProps
本身不应该有副作用。
如果您需要调度操作以响应prop更改,您可以创建一个组件类并使用生命周期方法:
class UserProfile extends Component {
componentDidMount() {
this.props.fetchUser(this.props.id)
}
componentDidUpdate(prevProps) {
if (prevProps.id !== this.props.id) {
this.props.fetchUser(this.props.id)
}
}
// ...
}