【发布时间】:2020-09-05 07:51:35
【问题描述】:
我有 2 个组件和一个上下文提供程序,当我在父级别调用我的钩子时,我可以毫无问题地更改状态并让这 2 个组件通过上下文获取值
contex api 使用的工作演示,但我在父级别调用更改状态,这不是我想要的 https://stackblitz.com/edit/react-51e2ky?file=index.js
我想用钩子改变内部组件的状态,但是当我点击navbar login 时我没有看到值被改变。
https://stackblitz.com/edit/react-rgenmi?file=Navbar.js
父母:
const App = () => {
const {user} = loginHook()
return (
<UserContext.Provider value={user}>
<Navbar />
<Content />
</UserContext.Provider>
);
}
Navbar.js
const Navbar = () => {
const user = React.useContext(userContex)
const {setUser} = loginHook()
return <div>{user ? <span>{user.name}</span> : <button onClick={() => {
setUser({
name: 'jane'
})
}}>navbar Login</button>}</div>
}
自定义钩子
const loginHook = () => {
const [user, setUser] = React.useState(null)
return {
user,
setUser
}
}
我可以将 setUser 从父级传递给子级,但我想避免这种情况,我希望我可以使用上下文 api 并无缝响应钩子。
【问题讨论】:
标签: javascript reactjs react-context