javascript - React-Redux:处理同一个 redux 状态属性的多次更改
问题描述
假设 Redux store 有一个 state 属性叫做number,初始值为 0,它还使用了一个基本的 dispatch 函数和一个基本的 action creator,所以我们可以使用changeNumber来改变number的值,当然这也是在减速机。
像这样的东西:
const CHANGE_NUMBER = "CHANGE_NUMBER";
//action creator
const AC_change_number = function(n) {
return {type: CHANGE_NUMBER, number: n}
}
//Mapping state and dispatch
const mapStateToProps = function(state) {
return {number: state.number};
}
const mapDispatchToProps = function(dispatch) {
return {changeNumber: function(n) {
dispatch(AC_change_number(n));
}};
}
const defaultState = {number: 0}
const rootReducer = function(state=defaultState, action) {
switch(action.type) {
case CHANGE_NUMBER:
return Object.assign({}, state, {number: action.number});
break;
default:
return state;
}
}
现在让我们看看我们稍后在渲染中显示这个数字,并使用以下 onClick 函数添加一个按钮:
handleClick() {
this.props.changeNumber(this.props.number+1)
this.props.changeNumber(this.props.number+1)
this.props.changeNumber(this.props.number+3)
}
代码流的预期行为是每次点击增加 5,但增加了 3,这表明只执行了最后一条语句。我假设所有这些动作都是同步执行的,最后一条语句是在仍然为 0 的数字上执行的,所以我需要一个方法让 dispatch 2 等到 1 完成,dispatch 3 直到 2 完成等等,会是什么实现这一目标的最佳方法?
解决方案
推荐阅读
- dynamic-programming - 如何解决这个经典的动态规划问题?
- javascript - Google Analytics 会用 CID 覆盖 UID 吗?
- ros - Roscpp 数据时间值
- javascript - 我正在尝试构建一个带有数字的 90 度三角形,仅使用两个嵌套的 for 循环
- arrays - 需要帮助使用 VBA 跳过空的 json 数组
- php - 每 4 个实例将 Ad 元素插入 foreach 循环
- javascript - ReactJS 无法将请求从 localhost:3000 代理到 localhost:3003
- excel - Excel UDF - 对单元格内用逗号分隔的数字和文本进行排序
- algorithm - 格子上的点
- angular - Ionic 3 使用令牌显示来自 api 的数据