【发布时间】:2021-11-14 02:04:12
【问题描述】:
更新board组件时延迟,我的dispatch(checkResult(board));不能正常工作。井字游戏,这里有一个问题的例子:
设置了 3 个十字架但没有胜利,但是当我再做 1 个动作(设置一个十字架或零)时,则算胜利:
我的代码在:
const mapStateToProps = ({board, players}) => ({board, players});
const mapDispatchToProps = dispatch => ({
draw: (board, players, squareIndex) => {
if (!board[squareIndex]) {
if (players[players.turn] === 'X') {
dispatch(drawXAction(squareIndex));
} else {
dispatch(drawOAction(squareIndex));
}
console.log(dispatch(checkResult(board)))
dispatch(checkResult(board));
dispatch(toggleTurnAction());
}
}
});
export default connect(mapStateToProps, mapDispatchToProps)(Square);
还有 checkResult 函数:
export function checkResult(board) {
if (checkVictory(board, 'X')) {
return {
type: X_WINS
}
} else if (checkVictory(board, '0')) {
return {
type: O_WINS
}
} else {
const check = board.filter(symbol=>symbol===null);
if(check.length===1) {
return {
type: TIE
}
}else {
return {
type: 'RANDOM'
}
}
}
}
【问题讨论】:
标签: javascript reactjs redux react-redux