【发布时间】:2021-06-15 01:28:14
【问题描述】:
我正在尝试调度一个修改状态中“矩阵”数组的操作,该数组正在被修改,但只有当我在 MUp() 函数中硬编码返回的数组时,组件才会更新。
减速器:
export const initialState = {
board: {
matrix: [
[4, 2, 0, 0],
[4, 2, 4, 0],
[4, 0, 16, 2],
[4, 2, 32, 0],
],
},
};
export const board = (state = initialState.board, action) => {
if (action.type == MOVE_UP) {
return {
...state,
matrix: MUp(state),
};
}
return state;
};
const MUp = (state) => {
let mat = state.matrix;
const size = state.gridSize;
var ok;
for (var j = 0; j < size; j++) {
ok = 1;
while (ok) {
ok = 0;
for (var i = size - 2; i >= 0; i--) {
if (mat[i][j] != 0) {
if (mat[i + 1][j] == mat[i][j]) {
mat[i][j] = 0;
mat[i + 1][j] = 2 * mat[i + 1][j];
ok = 1;
} else {
if (mat[i + 1][j] == 0) {
mat[i + 1][j] = mat[i][j];
mat[i][j] = 0;
ok = 1;
}
}
}
}
}
}
console.log("up");
return mat;
};
行动:
export const moveUp = () => {
return {
type: MOVE_UP,
};
};
以及我调度操作的函数:
export const Moves = () => {
const dispatch = useDispatch();
document.addEventListener("keydown", function (e) {
if (e.key === "ArrowUp") dispatch(moveUp());
});
return null;
};
【问题讨论】:
标签: javascript reactjs redux react-redux jsx