2017-02-09 6 views
2

У меня есть следующие реакции-перевождь состояние:Redux состояние с лучшей структурой

{ 
    response: { 
    json: [], 
    waitingForResponse: false, 
    communicationError: false, 
    searchButtonDisabled: true 
    }, 
    routing: { 
     ... 
    } 
    } 
} 

Я хотел бы иметь государство с лучшей структурой, чем-то вроде этого:

{ 
    app: { 
     home: { 
      searchButtonDisabled: true 
     }, 
     warning: { 
      waitingForResponse: false, 
      communicationError: false 
     }, 
     rest: { 
      json: [], 
      httpStatus: 200 
     } 
    }, 

    routing: ... 
} 

Я думаю, мне нужно сделать волшебство с определением магазина. Мой текущий файл App.js выглядит следующим образом

const store = createStore(
    combineReducers({ 
     response: reducer, 
     routing: routerReducer 
    }), 
    composeEnhancers(applyMiddleware(thunk)) 
); 

ли смысл строить эту структуру или он просто делает мой код более сложным, без каких-либо дополнительных преимуществ?

Если это не хорошая идея, то я могу добавить некоторые префиксы перед именем исходных свойств:

{ 
    response: { 
    restJson: [], 
    restHttpStatus: 200, 

    warningWaitingForResponse: false, 
    warningCommunicationError: false, 

    homeSearchButtonDisabled: true 
    }, 
    routing: { 
    locationBeforeTransitions: { 
     pathname: '/hello/', 
     ... 
    } 
    } 
} 

Что является лучшей практикой для создания большего государственного компонента?

ответ

3

Нормализация (при условии, что она плоская, насколько это возможно) облегчит вам жизнь в долгосрочной перспективе, хотя нет жесткого и быстрого правила.

Официальные документы о нем: http://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html

Марк Эриксон написал тонны хороших вещей на нем уже: https://hashnode.com/post/what-are-the-best-practices-when-normalizing-redux-data-cive6wc8b08aj3853mvjpfsh1

+0

удивительные Docs! Спасибо Крису. – zappee

+1

Не стоит беспокоиться, весь кредит принадлежит Марку, он пистолет – Chris

+0

Хех, спасибо! Просто рад видеть, что материал, который я написал, полезен для людей :) – markerikson

Смежные вопросы