Ich habe diesen Container und Komponente und das Objekt yeast
, dass ich versuche, in meinem Geschäft zu setzen. Es funktioniert jedoch nicht, wenn ich es versuche und es speichere. Das Objekt sieht wie folgt ausRedux-Status nicht mit JavaScript-Objekt aktualisieren
{ yeastType : value, temp: value}
Container.js
const mapDispatchToProps = (dispatch) => {
return {
handleYeastChange: (yeast) => {
dispatch(actions.updateYeast(yeast))
}
}
};
const RecipeYeastContainer = connect(
mapStateToProps,
mapDispatchToProps
)(RecipeYeast);
Component.js
updateYeastState = (updatedYeast) => {
this.props.handleYeastChange(updatedYeast)
};
ich keine Fehler in der Konsole oder etwas haben. Wenn ich meine Redux-Dev-Tools öffne, sagt es mir, dass der Status bereits aktualisiert wurde, wenn die Aktion aufgerufen wird. Und damit immer nur den ersten Buchstaben, der in mein Feld eingegeben wird. Es besteht nie darauf. Es ist wirklich komisch. Es wird auch nie in der Benutzeroberfläche angezeigt. Ich kann so viel tippen, wie ich möchte, und sehe, wie die Aktion ausgelöst wird und der Zustand den ersten Buchstaben behält, aber nicht in der Eingabe erscheint.
Was komisch ist, dass wenn ich den Code in yeastType
und temp
an die Eigenschaft Funktion übergeben und das Objekt darin erstellen, funktioniert es. (Siehe unten)
Dies funktioniert: Container.js
const mapDispatchToProps = (dispatch) => {
return {
handleYeastChange: (yeastType, temp) => {
const yeast = {yeastType, temp}
dispatch(actions.updateYeast(yeast))
}
}
};
Component.js
updateYeastState = (updatedYeast) => {
this.props.handleYeastChange(updatedYeast.yeastType, updatedYeast.temp)
};
ich kann nicht herausfinden, warum dies geschieht. Ich dachte, ich könnte das Objekt einfach durchreichen und muss es nicht rekonstruieren.
Sie sollten das vorherige und das nächste Objekt in redux debuggen und vergleichen. Wenn sich ein neues Objekt ändert, wird nur der Status aktualisiert. Um zu debuggen, drücken Sie F10, um in den Bereich zu gelangen, in dem redux beide Objekte vergleicht. – Ajaykumar
@Ajaykumar Ich habe das versucht. Jeder Tastendruck aktualisiert den Zustand, behält aber nur einen Buchstaben. Die Benutzeroberfläche wird nie aktualisiert, und wenn ich in Chrome inspiziere, werden die Stützen auf der Komponente niemals aktualisiert, so dass der Wert für die Eingabe niemals aktualisiert wird. Dann überschreibt jeder Tastendruck den letzten Buchstaben des Zustands, weil die Benutzeroberfläche denkt, dass das ist. Es scheint, dass solange ich das "Hefe" -Objekt irgendwo entlang des Reduktionsweges rekonstruiere, es speichern kann, aber ich kann es nicht einfach durch den ganzen Weg von der Komponente durchlassen – Kierchon