Ich bin ein Anfänger in react.js. Ich mache ein Brettspiel als Anfängerprojekt. Es gibt eine Komponente, die würfelt. Wenn der Würfel gewürfelt wird, wird eine Aktion ausgelöst, so dass der Status geändert wird, um die Werte dieses gerollten Würfels widerzuspiegeln. Aber im Reduzierer sind sowohl die Werte von Zustand als auch action.data gleich. Wie ist das möglich?Irgendwie immer aktualisiert Zustand in Reducer
Ich habe einen Würfel Komponente rollen, die diese zurück:
Wenn Sie auf die Schaltfläche klicken, wird eine Aktion ausgelöst wird, das Update den Zustand sollte durch Würfel Werte in ihm hinzufügen.
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
}
});
}
In Minderer:
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;
}
}
Wenn ich diese Zeilen ändere const newTurn = Object.assign (state.currentTurn, action.data); Rückgabe Object.assign (state, {currentTurn: newTurn}); zu diesem Rückkehr Zustand; Korrekte Werte von state und action.data werden protokolliert, obwohl console.log über diesen Anweisungen liegt. Was ist los? :( –
Einige code style rat: Es ist besser, eine intermediate funktion in 'mapDispatchToProps' anstelle einer methode in der komponente:' const mapDispatchToProps = (versand) => ({rollDice:() => versand (actions.rollDice ())}); '. Dann in der Komponente rufen Sie einfach' this.props.rollDice() '. – timotgl