说我有一个待办事项列表,在创建待办事项后,我想将该项目保存到localstorage中。减速机怎么样?我应该在reducer中还是在视图中执行setItem方法?
case 'PUBLISH_TODO_PENDING':
return { ...state, loading: true, todo_published: false, //do I do this? }
case 'PUBLISH_TODO_FULFILLED':
return {
...state,
loading: false,
todo_published: true, //do I do this?
data: {
result: {
todo: state.data.todo,
}
}
}
如果我想在视图中使用setItem,我必须做一个标志,告诉todo wether的数据是否已发布。这很愚蠢我也必须将旗帜置于初始状态。
答案 0 :(得分:4)
你应该使用redux-thunk。要在您的反应应用中使用它,请在商店中使用以下代码段。
const configureStore = (initialState) => (
createStore(
reducer,
initialState,
composeEnhancers(
applyMiddleware(thunk)
)
)
此外,更好的做法是编写涉及在单独文件夹中设置和获取本地存储的代码,比如说'utils'并在操作中的操作页面中导入相同内容。
答案 1 :(得分:0)
保存到localstorage是一个副作用,使用redux-saga很好处理,所以你听一个特定的动作,你做的事情就像事件监听器。