Деструктурирование избыточного состояния возвращает ошибку в приложении реакции - PullRequest
0 голосов
/ 07 апреля 2020

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

const mapStateToProps = ({streams}, {auth: {user}}) => {
    return { 
        streams,
        userId: user ? user.googleUser.getBasicProfile().getId() : null
    };
}

Вот код редуктора, который управляет частью «auth» состояния :

let initialState = {
    user: { 
        isSignedIn: null,
        googleUser: null
    },
    gAuthInstance: null
}

export const authReducer = (state = initialState, action) => {
    switch(action.type) {
        case 'AUTH_STATUS_CHANGED':
            return {...state, user: authUserReducer(state.user, action) }
        case 'GAUTH_INSTANCE':
            return {...state, gAuthInstance: authInstanceReducer(state.gAuthInstance, action)}
        default:
            return state;
    }
}

и вот мой комбинированный код редуктора, который я передаю в магазин при создании:

export default combineReducers({
    auth: authReducer,
    form: formReducer,
    streams: streamsListReducer
});

при запуске приложения я получаю ошибку:

 60 | const mapStateToProps = ({streams}, {auth: {user} }) => {
  61 |     return { 
  62 |         streams,
  63 |         userId: user ? user.googleUser.getBasicProfile().getId() : null

Теперь я понимаю, что первоначально redux вызывает редукторы с состоянием undefined , что может быть причиной проблемы. Мои вопросы:

  1. Можно ли таким образом деструктурировать избыточное состояние?
  2. Можно ли сделать const mapStateToProps = ({streams}, {auth: {user} = {} }), чтобы назначить пустой объект свойству user? Это делает трюк наверняка.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...