victorzadorozhnyy
@victorzadorozhnyy

Как лучше вернуть стейты к первоначальному состоянию в моем случае(redux)?

Есть приложение для учета и мониторинга работы сотрудников. При выборе задания, открывается форма (350-1000 полей), все это разворачивается и отображается постепенно, когда мы выбираем определенные действия и заполняем поля.
Если мне нужно вернуть часть стейтов к первоначальному состоянию для отдельной ветки стейтов, то как мне лучше это сделать и как правильно организовать сами стейты?
Пример вилки развития событий
<select
          className={"form-control"}
          name={field}
          value={value}
          onChange={e=>{
//onChange(value, name) это redux action задающий стейты
              onChange(e.target.value, e.target.name)
              if(e.target.value==='F2F') onChange(true, 'openF2F') //Вот тут как сделать через if /else или 
//onCollapse('openF2F', true) думаю можно сделать action в котором будут происходить изменения стейтов
//Хорошая ли это идея?
              else { //Можно разбить по группам
                  onCollapse('openF2F', false)
                  onCollapse('openWhereOther', false)
                  ...//Можно по одному, так нагляднее и быстрее, но кода больше на одной странице 
                  onChange('','services_ff')
                  onChange('','services_ff_other')
                  ...
              }
          }}
      >
          <option key={99} value=''>Select</option>
          {howList.map((item, i)=>{return <option key={i} value={item}>{item}</option>})}

      </select>

Сами стрейты имеет ли смысл по веткам разбивать или это лишнее
const initialState = {
// Ветки развития событий
    facilities: ['Select'],
    showModal: false,
    modalBodyContainer: '',
    openF2F: false,
    openWhereOther: false,
    openRelPat: false,
    openECFOther: false,
    openMainOptions: false,
// Сами стейты 350-1000 штук на форму
    loc: '',
    engagement_services: '',
    services_ff: '',
    services_ff_other: '',
    ps_target: '',
    relationship: '',
    ps_relationship_other: '',
...
}
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
Наиболее правильный подход, это описать несколько асинхронных экшинов (redux-thunk) для очистки определенных данных состояния
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы