나는 다음과 같은 행동 작성자가 :REDUX 동작이 발송 완료 될 때까지 기다립니다
export function scrolltoNextItem(item) {
return (dispatch, getState) => {
dispatch(appendItem(Item));
dispatch(
scrollToNextIndex(
getState().items.length - 1
)
)
}
}
문제가 인 appendItem 전에 scrollToNextItem
실행이 완료되고 스크롤 위치가 잘못되는 것을 포기 끝나는입니다. 나는 scrollToNextItem
를 실행하기 전에 이것은 setTimeout
스크립트의 실행이 다음 틱을 기다릴 수 있도록 추가하여의 경우 증명할 수 :
export function scrolltoNextItem(item) {
return (dispatch, getState) => {
dispatch(appendItem(Item));
setTimeout(() => {
dispatch(
scrollToNextIndex(
getState().items.length - 1
)
)
}, 0);
}
}
어떻게 마무리 할 appendItem
조치를 기다릴 수있다?
this.setState({something: 'some thing'},() => {
console.log('something is set');
});
그러나 dispatch
어떤 콜백 기능을 제공하지 않습니다 : 표준 땅 반응에 난 그냥 setState
콜백을 사용합니다.
에서 다음과 같이 호출 할 수있는 약속으로 인 appendItem을 감고
에 인수로
dispatch
를 전달할 수 있습니다? –항목 추가는 단순한 작업입니다. –
그러면 동기화되어야하고 setTimeout에 도달 할 때까지 appendItem이 이미 완료되었습니다. @mikeRifgin –