【发布时间】:2020-08-08 16:45:12
【问题描述】:
当我从组件内部调度一个动作(即单击一个按钮)时,动作中更改的状态不会立即在组件的道具中更新。我通过 Redux 的 connect 函数连接 state 和 dispatch 到 props。我确实注意到它在组件的渲染中正确更新。
Game.jsx
const Game = ({ playerCards, add }) => {
const stand = () => {};
const hit = () => {
add(getNextCard());
console.log(playerCards); // Outputs the old state
};
return (
<div className="container--center">
<div className="container__inner--center">
<div className="game-wrapper">
<div className="game-wrapper__inner">
<Player />
<form className="player-actions">
<button type="button" onClick={stand}>
Stand
</button>
<button type="button" onClick={hit}>
Hit
</button>
</form>
</div>
</div>
</div>
</div>
);
};
export default connect(
(state) => {
return {
playerCards: state.cards.player,
};
},
(dispatch) => {
return {
add: (card) => dispatch(addPlayerCard(card)),
};
}
)(Game);
addPlayerCard 操作
const addPlayerCard = (card = {}) => {
return {
type: ADD_PLAYER_CARD,
card,
};
};
【问题讨论】: