#javascript #reactjs #react-context #context-api
#javascript #reactjs #реакция-контекст
Вопрос:
В моем файле есть 2 контекста app.js
:
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
?
Ответ №1:
В React данные стекают вниз, поэтому ваши варианты:
ChildContext
быть родителемAuthContext
.- Переместить
logout
функцию в ее собственный контекст
function App() {
const logout = () => {
/*...*/
};
return (
<LogoutContext value={logout}>
<AuthContext>
<ChildContext>
<Template />
</ChildContext>
</AuthContext>
</LogoutContext>
);
}
Комментарии:
1. с помощью вашего ответа я вроде бы использовал вариант 2 и создал единый компонент с маршрутом «/ logout» на нем. и написал логику выхода из системы внутри этого. Спасибо