调用适当的操作后,在localstorage中保存数据。反应&终极版

时间:2017-11-10 16:22:16

标签: reactjs redux local-storage react-redux middleware

我要在localstorage中保存一些数据,但只能在调用UPDATE_POST操作之后。现在我通过以下方法在index.js中应用localstorage:

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

它每秒都会在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
});

1 个答案:

答案 0 :(得分:0)

我使用Redux-thunk(https://github.com/gaearon/redux-thunk) - 它允许你编写返回函数而不是动作的动作创建者 - 允许你在动作中执行异步任务,然后点击reducer。

使用redux-thunk你可以调用异步函数(下面的例子中的performSomeAsyncFunction()),得到响应,处理它(如下面的saveDataToLocalStorage()虚函数),然后点击reducer来更新你的状态:

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

    });
  };
};
  • 不要忘记处理上面的异步功能失败