【发布时间】:2016-09-06 04:59:23
【问题描述】:
我正在使用 react-router-redux 以及 redux、react-router 和 react,并且在这个 repo 中一切正常:
https://github.com/justsayno/redux-react-introduction-code/tree/issue-branch
(查看分支issue-branch 以复制我的问题)
我已经使用react-router-redux 将react-router 状态集成到我的redux 状态中,并且可以成功地使用mapStateToProps 从props 中获取我需要的路由器参数employeeId,如下所示:
(以下来自this file)
const mapStateToProps = (state, ownProps) => ({
employeeId : ownProps.params.employeeId,
employee: state.selectedEmployee.item,
hasLoaded: state.selectedEmployee.hasLoaded,
hasError: state.selectedEmployee.hasError,
error: state.selectedEmployee.error
})
在我的渲染函数中,我可以 console.log(TheemployeeId 是 ${this.props.employeeId}),它会随着我路由到该组件和参数的变化而变化。
但由于我不明白的原因,当参数更改时这不会触发。
componentWillReceiveProps(nextProps){
console.log(nextProps)
}
我想要实现的是对员工列表与单个员工的不同模拟 API 调用,我需要在 employeeId 参数更改时重新检索员工,否则我只能看到其中一名员工。我打算在我的componentWillReceiveProps 函数中执行此操作,检查employeeId 的更改并启动操作(如果有的话):
componentWillReceiveProps(nextProps){
const { employeeId, selectEmployee } = this.props
if(nextProps.employeeId !== employeeId){
selectEmployee(nextProps.employeeId)
}
}
我是不是搞错了?
【问题讨论】:
标签: reactjs redux redux-router