Redux React-Native: неопределенный объект после обновления состояния - PullRequest
0 голосов
/ 30 мая 2018

Я настроил редукторы, экшн и магазин, и они, кажется, работают нормально.Однако, когда я пытаюсь получить доступ к хранилищу через this.props, я получаю неопределенный объект.Есть идеи, почему это может происходить?

Index.js:

class Index extends React.Component {
        render() {
                console.log("##########################")
                console.log(this.props)
                this.props.dispatchloggedInUser("User found");
                console.log(this.props.dispatchGetUser())
                console.log("###########################")

                return <Root/>;
            }
}
   function mapDispatchToProps(dispatch) {
        return {
            dispatchloggedInUser: (data) => dispatch(loggedInUser(data)),
            dispatchGetUser: () => dispatch(getUser())
        }
    }
    function mapStateToProps(state) {
        return {
            user: state.user
        }
    }

    export default connect(mapStateToProps, mapDispatchToProps)(Index)

AuthReducer:

    switch (action.type) {
        case LOGGED_IN: {
            console.log("Inside Logged IN")
            console.log(state)
            return [
                ...state,
                {
                    user: action.data
                }
            ]
        }

        case GET_USER: {
            return {...state }
        }

        default:
            return { ...state }

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Я думаю, вы должны изменить эту часть:

case LOGGED_IN: {
    console.log("Inside Logged IN")
    console.log(state)
    return [
        ...state,
       {
           user: action.data
       }
    ]
}

на ...

case LOGGED_IN: {
    console.log("Inside Logged IN")
    console.log(state)
    let user = action.data
    return {...state, user}
}
0 голосов
/ 30 мая 2018

Взгляните на свой корневой редуктор - пользователь, вероятно, вложен в auth или что-то подобное - чтобы узнать:

function mapStateToProps(state) {
    console.log(state);
    return {
        user: state.auth.user // or ?
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...