Warten Sie ein redux-Aktion zu beenden, Versand
Habe ich die folgende Aktion Autor:
export function scrolltoNextItem(item) {
return (dispatch, getState) => {
dispatch(appendItem(Item));
dispatch(
scrollToNextIndex(
getState().items.length - 1
)
)
}
}
Problem ist, dass scrollToNextItem
läuft, bevor appendItem beendet hat und die scroll-position endet als falsch. Kann ich beweisen, dass dies der Fall ist, indem ein setTimeout
um die Ausführung des Skripts warten, bis der nächste tick vor der Ausführung scrollToNextItem
:
export function scrolltoNextItem(item) {
return (dispatch, getState) => {
dispatch(appendItem(Item));
setTimeout(() => {
dispatch(
scrollToNextIndex(
getState().items.length - 1
)
)
}, 0);
}
}
Wie kann ich warten, bis die appendItem
Aktion zu beenden? Im standard reagieren land, ich würde nur verwenden Sie die setState
callback:
this.setState({something: 'some thing'}, () => {
console.log('something is set');
});
Aber dispatch
bietet keine callback-Funktionalität.
- Wie funktioniert appendItem Aussehen?
- Append-Element ist nur eine schlichte Aktion.
- Dann sollte es synchron sein und von der Zeit erreichen Sie setTimeout, appendItem ist schon fertig @mikeRifgin
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man immer wickeln appendItem in ein Versprechen und pass
dispatch
als argument, um esDann Sie können es nennen, wie dies aus
scrolltoNextItem
resolve()
aufgerufen wird, nachdem die Aktion abgeschlossen ist?