@Itvanya

Как организовать код Redux, чтобы получить свойства из стороннего reducer, чтобы получить его состояние?

Друзья, привет Возникла проблема : есть изначальное состояние, в котором есть всего два поля. Первое поле - объект, в котором есть лист, который подгружается с сервера. Условно, там данные с информацией о каких-то людях. Второе поле - динамические данные, которые указывают данные человека, на которого было кликнуто в списке(компоненте) людей.
Суть в том, что с тех пор, что эти данные меняются динамически, они присваиваются из persons.list перебирая его по ID. Редъюсера два - по одному на каждый объект состояния. Задача состоит в том, чтобы получить состояние одного редьюсера из другого. Как это можно реализовать?
// Изначальное состояние

const initialState = {
  persons : {
    list : [{pers1}, {pers2}],
    fetched : false,
    fetching : false,
    error : null
  },
  currentPerson : {
   id : 777,
    name : 'Andreas',
    surname : 'Smith',
    clicks : 100500
  }

// Редьюсеры. Редьюсеру currentPersonReducer нужно получить доступ к данным из
// состояния, которое сгенерировал нам personReducer, чтобы сделать 
// итерацию по массиву и задать состояние текущего человека.

function currentPersonReducer(state = initialState.currentPerson, action) {
  switch(action.type) {
    case 'SET_PERSON':
       //Здесь нужно получить доступ к данным редюсера
  }
}

function personReducer(state = initialState.person, action) {
  switch (action.type) {
    case 'ADD_PERSON':
      var personObj = action.payload;
      return Object.assign({}, state, {
        list : state.list.concat(personObj)
      });
  }
}
}
  • Вопрос задан
  • 1100 просмотров
Пригласить эксперта
Ответы на вопрос 2
@YNile
JS Developer
Никак. Каждый редьюсер отвечает за свой участок state и не знает о других ничего.
Объединяйте в один.
Ответ написан
Комментировать
Нужно хранить данные в одном редьюсере. Не разделяйте на 2 - меньше кода и проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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