неизменный js карта получить глубокие объекты карты - PullRequest
1 голос
/ 01 мая 2020

У меня есть постоянная карта от подключенного реагирующего маршрутизатора в состоянии избыточности.

router: {
    location: {
      pathname: '/test',
      search: '',
      hash: '',
      state: {
        tokenIds: {
          size: 2,
          _map: {
            size: 2,
            _root: {
              ownerID: {},
              entries: [
                [
                  '70c48738',
                  true
                ],
                [
                  '1a8a6c24',
                  true
                ]
              ]
            },
            __altered: false
          }
        }
      },
      key: 'rkh3ve'
    },
    action: 'POP'
  }

Я хочу извлечь массив tokenIds. Я ожидаю что-то вроде [70c48738,1a8a6c24].

Я пытался state.getIn(['router','location','state','tokenIds'), но результат, который я получаю,

Map {size: 3, _root: ArrayMapNode, __ownerID: undefined, __hash: undefined, __altered: false}

1 Ответ

0 голосов
/ 01 мая 2020

Ну вот как работает Immutable JS. Вызывая state.getIn(['router','location','state','tokenIds']), вы получаете доступ к неизменяемому экземпляру JS Map, и это не просто объект JS Map или JS. Вам все еще нужно обработать это, чтобы получить то, что вы хотите. Проверьте документацию на карте , чтобы узнать, как получить доступ к фактическим данным.

Чтобы достичь того, что вы ожидаете, вы можете, например, сделать: state.getIn(['router','location','state','tokenIds']).keySeq().toJS() - это вернет обычный JS массив Map ключей. Или без toJS(), чтобы получить неизменный JS Array экземпляр.

...