问题描述
我的app.js
文件中有2个上下文:
function App() {
return (
<AuthContext>
<ChildContext>
<Template />
</ChildContext>
</AuthContext>
);
}
当用户注销时,我想访问ChildContext
内部的值,但是logout
函数位于AuthContext
内部:
// inside AuthContext:
const myContext = useContext(ChildContext);
const logout = () => {
// doing some stuff..
//
// here is the problem:
console.log(myContext.some_value);
}
错误是:
cannot read property 'some_value' of undefined
那是因为ChildContext
在AuthContext
之后声明。
那么如何在some_value
内部进入AuthContext
?
解决方法
在React data flows down中,因此您的选择是:
-
ChildContext
成为AuthContext
的父母。 - 将
logout
函数移至其自己的上下文中
function App() {
const logout = () => {
/*...*/
};
return (
<LogoutContext value={logout}>
<AuthContext>
<ChildContext>
<Template />
</ChildContext>
</AuthContext>
</LogoutContext>
);
}