我要在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
});
答案 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()
});
};
};