Доступ к значению селектора в ReactJS с помощью ImmutableJS

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

Я хотел бы иметь возможность сделать что-то вроде этого, чтобы проверить:

const room = selectRoomById('roomId1');
if (room) {
    console.log('this room exists in the global.rooms store');
}

Магазин выглядит так:

global: {
    rooms: {
        "roomId1": {
            "name": "room 1"
        },
        "roomId2": {
            "name": "room 2"
        }
    }
}

Вот как выглядят mapStateToProps (эта часть работает) и мои селекторы:

const mapStateToProps = (state, props) => {
  return createStructuredSelector({
    room: selectRoomById(props.params.roomId)
  });
}

Селекторы:

const selectGlobal = () => (state) => state.get('global');
const selectRoomById = (roomId) => createSelector(
  selectGlobal(),
  (globalState) => globalState.getIn(['rooms', roomId])
);

Когда я делаю

console.log(selectRoomById('roomId1'));

Я возвращаю функцию, но не могу получить искомое значение. Я думаю, это потому, что я использую createSelector, но я не уверен. Кто-нибудь знает, как я могу получить доступ к значению селектора?


person Dillon S.    schedule 08.01.2017    source источник


Ответы (1)


Мне пришлось использовать toJS() в моем селекторе...

сдача

(globalState) => globalState.getIn(['rooms', roomId])

to

(globalState) => globalState.getIn(['rooms', roomId]).toJS()

ImmutableJS добавлял здесь уровень сложности.

Обновление:

Вместо использования toJS (что дорого) я просто использую .get и .getIn в компоненте.

person Dillon S.    schedule 08.01.2017