I次のアクションの作成者があります。Reduxのアクションがディスパッチ終了するのを待って
export function scrolltoNextItem(item) {
return (dispatch, getState) => {
dispatch(appendItem(Item));
dispatch(
scrollToNextIndex(
getState().items.length - 1
)
)
}
}
問題がappendItemの前scrollToNextItem
の実行が終了したとスクロール位置が間違ってされて終わるということです。
export function scrolltoNextItem(item) {
return (dispatch, getState) => {
dispatch(appendItem(Item));
setTimeout(() => {
dispatch(
scrollToNextIndex(
getState().items.length - 1
)
)
}, 0);
}
}
私が完了するappendItem
アクションを待つことができますどのように私はscrollToNextItem
を実行する前に、次のダニのためのスクリプト待ちの実行を行うためにsetTimeout
を追加することによって、これが事実であることを証明することができますか?
this.setState({something: 'some thing'},() => {
console.log('something is set');
});
しかしdispatch
は、任意のコールバック機能を提供していません:標準では、私はちょうどsetState
コールバックを使用する土地を反応させます。
からこのようにそれを呼び出すことができます約束にappendItemのをラップし、それを引数として
を
dispatch
を渡すことができますか –項目を追加するのは簡単な操作です。 –
それは同期していて、setTimeoutに到達するまでにappendItemはすでに終了しています@mikeRifgin –