2017-11-10 16 views
0

localstorage에 일부 데이터를 저장하겠습니다 만, UPDATE_POST 액션을 호출 한 후에해야합니다. 이제 indexstj에 localstorage를 적용합니다 :적절한 조치를 취한 후 localstorage에 데이터를 저장하십시오. React & Redux

store.subscribe(throttle(() => { 
    post: saveState(store.getState().post); 
}, 1000)) 

그리고 1 초마다 localstorage에 데이터를 저장합니다. 하지만 내 목표는 updatePost 작업 후에 만 ​​저장하는 것입니다. 미들웨어를 사용하여 그것을 달성 할 수 있습니까? 어떻게 작성합니까?

내 감속기 :

const Post = (state = {}, action) => { 
    switch (action.type) { 
    case 'INIT_POST': 
     ..... some code 
    case 'UPDATE_POST': 
     ... some code 
    default: 
     return state 
    } 
}; 

내 행동은 :

export const updatePost = (...items) => ({ 
    type: 'UPDATE_POST', 
    items 
}); 
+0

위의 비동기 함수의 실패를 처리하는 것을 잊지 마세요? –

+0

예, 비동기 함수입니다. – Rafonix

답변

0

나는이에 돌아 오는-썽크 (https://github.com/gaearon/redux-thunk)를 사용 - 당신이 대신 행동의 기능을 반환 조치 제작자를 작성할 수 있습니다 - 작업에서 비동기 작업을 수행 한 다음 감속기를 누르십시오.

redux-thunk를 사용하면 비동기 함수 (아래 예제에서 performSomeAsyncFunction())를 호출하고 응답 (예 : 아래의 saveDataToLocalStorage() 함수)을 처리 한 다음 감속기를 눌러 상태를 업데이트 할 수 있습니다 :

export const startUpdatePost = (...items) => { 
    return (dispatch) => { 
    return performSomeAsyncFunction(...items).then((response) => { 
     dispatch(updatePost(...items)); 
     saveDataToLocalStorage() 

    }); 
    }; 
}; 
  • 또한 비동기 기능을 updatePost가