私はreact.jsの初心者です。私は初心者のプロジェクトとしてボードゲームを作っています。ダイスを回転させるコンポーネントがあります。ダイスがロールされると、その状態のダイスがそのダイスの値を反映するようにアクションがディスパッチされます。しかし、減速機では、stateとaction.dataの値は同じです。そんなことがあるものか? 何らかの形で還元剤の状態が更新されました
ボタンをクリック
は、アクションがディスパッチされ、それにサイコロ値を追加することにより、更新に状態を想定している。は、私はこれを返すコンポーネントを転がすサイコロを持っています。ジューサーで
rollDice(){
console.log("this.props ||||| rollDice()", this.props);
if(this.props.isDiceRolled){
alert("Move the marker...");
return;
}
this.props.dispatch({
type: "ROLL_DICE",
data: {
dice: Math.ceil(Math.random() * 5),
isDiceRolled: true
}
});
}
:Reduxので
switch(action.type){
.
.
.
case "ROLL_DICE": {
console.log("ROLL_DICE");
console.log(state, action.data);
const newTurn = Object.assign(state.currentTurn, action.data);
return Object.assign(state, { currentTurn: newTurn });
}
default: {
return state;
}
}
これらの行を変更した場合 const newTurn = Object.assign(state.currentTurn、action.data); 戻り値Object.assign(state、{currentTurn:newTurn}); to this return state; stateとaction.dataの正しい値は、console.logがこれらの文よりも上になっていても記録されます。何が起こっている? :( –
いくつかのコードスタイルのアドバイス:コンポーネントのメソッドではなく、 'mapDispatchToProps'に中間関数を持つ方が良いでしょう。' const mapDispatchToProps =(dispatch)=>({rollDice :()=> dispatch(actions.rollDice )}}); 'コンポーネントでは、単にthis.props.rollDice()を呼び出します。 – timotgl