2017-10-19 34 views
0

说我有一个待办事项列表,在创建待办事项后我想将项目保存到本地存储中。减速机的外观如何?我应该在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鉴于我必须做一个标志,告诉待办事项阉的统计发布与否。这很愚蠢,我不得不把旗子也放在初始状态。

回答

4

您应该使用redux-thunk。为了在您的反应应用程序中使用它,请在您的商店中使用以下代码段。

const configureStore = (initialState) => (
    createStore(
    reducer, 
    initialState, 
    composeEnhancers(
     applyMiddleware(thunk) 
    ) 
) 

而且,它是一个更好的做法,包括写和设置在一个单独的文件夹从本地存储获取代码,说“utils的”来导入相同的动作中你的操作页面。

+0

我在上面没有看到任何localstorage代码,localstorage util的位置在哪里?在createStore的参数中? –

+0

上面的代码片段是为了在你的动作中使用redux-thunk。您可以在文件夹'src'内创建文件夹'utils'(假设您使用了create-react-app)。在utils文件夹中,您可以创建包含涉及本地存储的所有功能的文件。 –

+0

什么是thunk这里(该参数传递给applyMiddleware。 –

0

保存到localstorage是一个副作用,使用redux-saga可以很好地处理,因此您可以监听特定的操作,并且可以像处理事件监听器一样进行操作。