javascript - Redux 状态已填充,但我收到错误 state is null

标签 javascript reactjs react-redux state store

我目前正在开发一个涉及登录用户的项目。在我的 redux 状态下,我有一个用户,它是一个不为空的对象。但是当我尝试从此用户对象获取 Angular 色时,我突然收到错误“状态为空”

this.props.userState.user 

返回具有 Angular 色属性的用户对象。

this.props.userState.user.role 

抛出错误“TypeError: this.props.userState.user is null”

编辑:以下是整个文件中的所有代码。

class ResultsMain extends Component {

componentDidMount() {
    firebase.auth().onAuthStateChanged(user => {
        if (user)
            getUser(user.email).then(foundUser => {
                console.log('User found:', foundUser);
                this.props.doSetUser(foundUser);
            }).catch((err) => {
                console.log(err)
                this.props.history.push('/');
            });
    });
}

render() {
    console.log("THE PROPS", this.props.userState.user)
    if (this.props.userState.role === "teacher") return <TeacherSearchPage/>
    else return <Results />
    //else return <div> </div>
}
}

function mapStateToProps(state) {
    return {
        userState: state.userState,
    }
}

function mapDispatchToProps(dispatch) {
    return {
        doSetUser: user => dispatch(userActions.setUser(user)),
    }
}

export const resultsMainPage = ReactRedux.connect(mapStateToProps, mapDispatchToProps)(ResultsMain);

reducer :

const initialState = {
    user: null,
    finished: false,
}

function copyAndUpdateObj(copiedObject, update) {
    return Object.assign({}, copiedObject, update);
}

export default function userReducer(state = initialState, action) {
    switch (action.type) {
        case INSERT_USER:
            return {...state, user: action.userInformation};
        case SET_USER: {
            let changes = {
                user: action.user
            }
            return copyAndUpdateObj(state, changes);
        }
        default:
            return state;
    }
}

最佳答案

你的 reducer 必须是这样的:

function reducer(state = initialState, action) {...}

无论 this.props.userState 的值是什么,都来自于您在一开始对 initialState 的定义。请确保在您的应用程序中定义 initialState 对象。

仔细检查您是否在初始状态下定义了 userState.user

关于javascript - Redux 状态已填充,但我收到错误 state is null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50525842/

相关文章:

javascript - 在文本字段的最大长度上调用 javascript 函数

html - 井字游戏 HTML CSS

reactjs - 我应该在哪里发送我的 redux

javascript - 如何在没有预先确定的 ViewContainerRef 的情况下动态地将 Angular 组件添加到 DOM?

javascript - 可以使用 getElementByID 显示多个 div 包装器的内容吗

javascript - 更改页面中多个元素的状态

javascript - 如果您不想更改值,如何将默认值作为输入值传回?

javascript - nextProps 键虽然有内容但神秘地无法访问

javascript - 我如何知道使用电子邮件和密码创建用户是否成功?并采取行动

javascript - 在 Material ui的日期选择器中更改格式日期