56 votes

comment définir l'état initial dans redux

Je suis à essayer de comprendre comment définir un état initial pour un magasin dans redux. Je suis à l'aide d' https://github.com/reactjs/redux/blob/master/examples/todos-with-undo/reducers/index.js à titre d'exemple. J'ai essayé de modifier le code tel que le todos avait une valeur d'initialisation.

const todoApp = combineReducers({
  todos,
  visibilityFilter
}, {
  todos: [{id:123, text:'hello', completed: false}]
})

à la suite de la doc: http://redux.js.org/docs/api/createStore.html

mais cela ne fonctionne pas, et je ne suis pas tout à fait sûr pourquoi.

80voto

Sean Points 496

Ce doit être le deuxième argument de createStore :

 const rootReducer = combineReducers({
  todos: todos,
  visibilityFilter: visibilityFilter
});

const initialState = { 
  todos: [{id:123, text:'hello', completed: false}] 
};

const store = createStore(
  rootReducer, 
  initialState
);
 

38voto

jmancherje Points 3036

Vous pouvez définir l'état initial dans le ou les réducteurs.

 const initialTodos = [{id:123, text:'hello', completed: false}]

// this is the ES2015 syntax for setting a default value for state in the function parameters
function todoReducer(state = initialTodos, action) {
  switch(action.type) {
    ... 
  }
  return state
}


const todoApp = combineReducers({
  // todos now defaults to the array of todos that you wanted and will be updated when you pass a new set of todos to the todoReducer
  todos: todoReducer,
  visibilityFilter
})
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X