开发者问题收集

类组件:无法读取未定义的属性“用户”

2021-07-10
25

我有一个类组件 User,我想渲染 state.user 中的内容。 使用 Redux Dev Tools,我可以看到用户具有正确的值。

这是我目前所拥有的:

class User extends Component {
    componentDidMount() {
        this.props.getUser('60ab0b564fbb1d334002c777');
    }

    renderUser = (user) => {
        return (
            user !== {} ? <p>{user.name}</p> : 'User not found'
        )
    }

    render() {
        console.log('props', this.props);
        return (
                <div>
                    {this.renderUser(this.props.users.user)}
                </div>

        )
    }
}

const mapStateToProps = state => ({
    user: state.user,
})

export default connect(mapStateToProps, {
    getUser,
})(User);

当我在 render 方法下记录 this.props 时,它会记录:

getUser: ƒ ()
user: undefined

在我组合 Reducer 的商店中,我有:

const rootReducer = combineReducers({
    users: userReducer
});

这就是为什么我需要执行 this.props.users.user 来获取用户。
用户的初始状态是 {

2个回答

我认为你在 mapStateToProps 中做错了。

在那里执行此操作

user: state.users

然后在 render 方法中

this.props.user.user
Irfan wani
2021-07-10

您的初始状态应该是

用户的初始状态是 {name: ''> 而不是 { 。因为当组件第一次渲染时,您的函数需要访问 user.name

这里也有拼写错误

const mapStateToProps = state => ({
    user: state.users,
})
underscore
2021-07-10