Не могу изменить состояние избыточных данных от сервера реагировать родной - PullRequest
0 голосов
/ 27 ноября 2018

Я не могу изменить избыточное состояние, если оно не предопределено в исходном состоянии.Это мое начальное состояние

var InitialState = Record({
   ....
   mode: null
   data:[]
})

Когда есть json с сервера, он будет в data.

Данные будут содержать как id, закладку, имя и т. Д.

Я могу получить доступ к данным с сервера this.props.search.data.bookmark, но я не могу обновить их, я думаю, что они не могут найти bookmark состояние.Я могу обновить состояние mode, так как оно находится в исходном состоянии.

Пример данных в json

{id:1 ,Bookmark:true},
{id:2 ,Bookmark:true},
.....

Короче говоря, я пытался сделать это Это работает

console.log(state.getIn(['search', 'mode]))

Но это не работает, (не определено)

console.log(state.getIn(['search', 'data', 'bookmark']))

Если я добавлю fromJS к полезной нагрузке редуктора при задании данных, я смогу получить к ним доступ

case SET_DATA:
      return state.set('data', fromJS(action.payload))

Теперь эта работа

console.log(state.getIn(['search', 'data', 'bookmark']))

но в моих контейнерах я получил ошибку

TypeError: TypeError: TypeError: TypeError: undefined не является объектом (оценивая 'this.props.search.data.map')

Я не могу использовать карту для зацикливания.

Как правильно это сделать?

1 Ответ

0 голосов
/ 28 ноября 2018

Судя по предоставленному вами коду, похоже, что вы ничего не возвращаете из своего редуктора.Предполагая, что вы используете immutablejs, setIn() возвращает копию состояния.Ваш код в настоящее время выбрасывает это значение (не используя его).Вы, вероятно, хотите вернуть эту копию.Попробуйте это:

case BOOKMARK:
   return state.setIn(['search', 'data', 'bookmark'], action.payload.total)

Единственное отличие - ключевое слово return.

...