javascript - Redux 存储不会随着反应状态的变化而变化
问题描述
我正在尝试根据当前状态更改更改 redux 存储,状态更改正确但this.props
仍作为初始化。这是我的代码:
componentWillMount(){
this.props.fetchMatches();
}
handleChange(newDateRange){
console.log('====================================');
console.log('handleChange fired');
console.log(this.state);
console.log('====================================');
}
function mapDispatchToProps(dispatch) {
return {
handleChange: (newDateRange) =>
dispatch({
...this.props.home,
startDate: newDateRange[0],
endDate: newDateRange[1]
})
}
}
export default connect(mapStateToProps, { mapDispatchToProps, fetchMatches })(Home);
这是以下的实现DateRange
:
<DateRangeInput className="daterange" value={[this.props.startDate, this.props.endDate]} onChange={this.handleChange} />
解决方案
您无法从此访问 mapDispatchToProps 中的道具,因为即使在组件安装之前调用了该函数。而是从 mapDispatchToProps 访问它,它在第二个参数中公开了先前的道具。
function mapDispatchToProps(dispatch, ownProps) {
return {
handleChange: (newDateRange) =>
dispatch({
...ownProps.home,
startDate: newDateRange[0],
endDate: newDateRange[1]
})
}
}
推荐阅读
- php - Doctrine 建议的 __clone 逻辑是否真的运行过?
- android - 内容和底部导航视图(材质)之间的分隔符,例如 PlayStore
- html-parsing - 如何使用 Simple HTML Dom Parser 读取图像 ALT 标签?
- html - 如何为 div 元素创建一个盒子阴影包装器?
- sql - 如何识别在合并语句中导致错误的行?
- apache-spark - Spark 驱动程序内存超出存储内存
- android - 是否可以在选定的 Room Database Dao 列上启用/禁用转换?
- sql - SQL:如何按列排序
- cordova - 拉动刷新不停
- python - Django基于下拉选择动态创建表单