만약 addOneThunk를 화살표 함수로만 사용한다면 다음과 같이 구현할 수 있습니다.
const addOne = x => x + 1; const addOneThunk = x => () => addOne(x); const fn = addOneThunk(1); setTimeout(() => { const value = fn(); // fn이 실행되는 시점에 연산 console.log(value); }, 1000);
redux-thunk 라이브러리를 사용하면 thunk 함수를 만들어서 디스패치할 수 있습니다. 그러면 리덕스 미들웨어가 그 함수를 전달받아 store의 dispatch와 getState를 파라미터로 넣어서 호출해 줍니다.
다음은 redux-thunk에서 사용할 수 있는 예시 thunk 함수입니다.
const sampleThunk = () => (dispatch, getState) => { // 현재 상태를 참조할 수 있고, // 새 액션을 디스패치할 수도 있습니다. }