我正在尝试将一个对象作为user我的 React 的值传递给. 然而,React 不喜欢将对象作为子对象传递的想法。这是我收到的错误消息:Context.Provider<UserContext.Provider value={user} />
错误:对象作为 React 子项无效(已找到:具有键 {id、用户名、名字、姓氏、电子邮件、头像} 的对象)。如果您打算渲染子集合,请改用数组。
我希望有人能帮忙。这是我的 React 组件,其中发生了所有这些:
class MyApp extends App {
constructor(props) {
super(props);
this.state = {
user: {},
authenticating: false,
};
}
logout = () => {
...
};
render() {
const { Component, pageProps } = this.props;
const user = {
user: this.state.user,
logout: this.logout,
};
return (
<>
{!this.state.authenticating && (
<UserContext.Provider value={user}>
<Navbar />
<Component {...pageProps} />
</UserContext.Provider>
)}
</>
);
}
}
有趣的是,当我改变
const user = {
user: this.state.user,
logout: this.logout,
};
到(例如)
const user = {
username: this.state.user.username,
logout: this.logout,
};
一切都很好。
所以(正如上面的错误消息所暗示的那样)问题在于传递this.state.user给我的上下文提供者。为什么?我该如何解决这个问题?
另外,这是我的<Context.Consumer />:
<UserContext.Consumer>
{user => (
<>
{user.user ? (
<>
<Avatar user={user.user} />
<Button onClick={user.logout}>Logout</Button>
</>
) : (
<>
<Nav.Link href="/users/login">Log in</Nav.Link>
<Nav.Link href="/users/signup">Sign up</Nav.Link>
</>
)}
</>
)}
</UserContext.Consumer>
狐的传说
凤凰求蛊
相关分类