Изменение состояния в массиве - PullRequest
0 голосов
/ 28 ноября 2018

Исходное состояние, которое у меня есть для списка результатов с сервера, будет на result

var InitialState = Record({
   result:[]
})

Результатом от сервера является список результатов поиска.

Пример массива результатов

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

Мой редуктор

case SET_BOOKMARK:
      return state.setIn(['result', 'Bookmark'], action.payload.total)

Я хочу обновить определенное состояние закладки, когда пользователь добавляет в закладки определенный идентификатор. Как этого добиться?Как редуктор выглядит?

1 Ответ

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

Вот пример для вашего случая

const { setIn } = require('immutable@4.0.0-rc.9')

const state = {"results": [{id:1 ,Bookmark:true},
{id:2 ,Bookmark:true}]};

function findElementIndex(arr, key, value) {
  for (let i = 0; i < arr.length; i++)
    if (arr[i][key] == value)
      return i;
}
const newState = setIn(state, 
    ['results', findElementIndex(state.results, 'id', 1), 'Bookmark'], false);

console.log(newState);
...