Редукс редуктор hasMap - PullRequest
0 голосов
/ 25 марта 2020

У меня есть hashMap в моем магазине приставок, я хочу изменить значение isChecked для идентификатора детей: 'A2', на рабочем столе и android все работает нормально, но на iphone У меня проблема, если я проверяю детей с идентификатором 'A2' Не знаю, почему этот ребенок идет на последнюю позицию.

Список инициализации:

- NameOne
- NameTwo
- NameThree

После нажатия на чекбокс с идентификатором A2

- NameOne
- NameThree
- NameTwo

Мой hashMap

const childrens = {
  'A1': { name: "NameOne", isChecked: false },
  'A2': { name: "NameTwo", isChecked: false },
  'A3': { name: "NameThree", isChecked: false },
};

Мой редуктор:

case "SELECT_CHILDREN": 
  const id = 'A2';
  return {
    ...state,
    [id]: {
      ...state[id],
      isChecked: !state[id].isChecked
    }
  };

1 Ответ

0 голосов
/ 25 марта 2020

Порядок ключей в JavaScript объектах не указан. И порядок зависит от JS двигателя. Таким образом, вы не можете полагаться на это, и это не ошибка.

Если вам нужен конкретный порядок для сущностей, вы можете использовать массивы. И форма вашего магазина будет примерно такой:

{
  order: ['A1', 'A2', 'A3'],
  items: {
    'A1': { name: "NameOne", isChecked: false },
    'A2': { name: "NameTwo", isChecked: false },
    'A3': { name: "NameThree", isChecked: false },
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...