react использует значение контекста внутри родительского контекста

#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 данные стекают вниз, поэтому ваши варианты:

  1. ChildContext быть родителем AuthContext .
  2. Переместить logout функцию в ее собственный контекст
 function App() {
  const logout = () => {
    /*...*/
  };
  return (
    <LogoutContext value={logout}>
      <AuthContext>
        <ChildContext>
          <Template />
        </ChildContext>
      </AuthContext>
    </LogoutContext>
  );
}
  

Комментарии:

1. с помощью вашего ответа я вроде бы использовал вариант 2 и создал единый компонент с маршрутом «/ logout» на нем. и написал логику выхода из системы внутри этого. Спасибо