Ich möchte eine Funktion auslösen, wenn ein neues ImmutableJS-Objekt erstellt wird. Ich möchte ein ImmutableJS-Objekt als meinen React-Anwendungszustand verwenden und den Standardcode reduzieren.Auf ImmutableJS-Änderungen warten?
Hier ist ein Teil von dem, was ich habe jetzt:
function addTodo(text) {
let state = store.getState(); // Gets ImmutableJS object.
let todos = state.get('todos');
let newState = state.set('todos', todos.push('text'));
store.update(newState); // Triggers rerender.
}
Hier ist, was ich will es wie sein:
function addTodo(text) {
let state = store.getState(); // Gets ImmutableJS object.
state.get('todos').push(text); // Store listens to change and replaces the current state with the newly created state. Store automatically triggers rerender.
}
Ist das möglich?
Ich habe versucht, die gesamte addTodo
in withMutations
, aber withMutations
nur flache Mutationen ermöglicht.
Ist nicht der Punkt bei immutableJS, dass Sie keine veränderbaren Objekte verwenden möchten? Wie wäre es, eine Funktion höherer Ordnung hinzuzufügen, wenn Sie den Standardcode reduzieren möchten? – David
Ich möchte, dass es für 'shouldUpdateComponent' unveränderbar ist. Wie würden in diesem Fall Funktionen höherer Ordnung helfen? Du meinst den Status "addTodo" als Argument übergeben und den neuen Zustand zurückgeben? Ich könnte den Zustand mehrere Male in einer Funktion aktualisieren und ich müsste 'state.set' noch mehrere Male aufrufen. –
Sehen Sie sich https://github.com/reactjs/redux an, um den reactjs-App-Zustand zu behandeln und speichern Sie dann den Status als unveränderliche Objekte für eine schnellere 'shouldUpdateComponent'. Ich habe schon mehrere Projekte damit gemacht. Redux wird Benachrichtigungen über Statusänderungen an Ihre Komponenten verarbeiten. –