Mam 2 konteksty w moim app.js Plik:

function App() {
  return (
      <AuthContext>
        <ChildContext>
         <Template />
        </ChildContext>
     </AuthContext>
  );
}

Gdy użytkownik się wylogi, chcę uzyskać dostęp do wartości wewnątrz ChildContext, ale logout Funkcja jest wewnątrz AuthContext:

// inside AuthContext:
const myContext = useContext(ChildContext);
const logout = () => {
  // doing some stuff..
  //
  // here is the problem:
  console.log(myContext.some_value);
}

Błąd to:

cannot read property 'some_value' of undefined

To dlatego, że ChildContext jest zadeklarowany po AuthContext. Więc jak mogę dostać się do some_value wewnątrz AuthContext?

0
pedram afra 20 październik 2020, 12:54

1 odpowiedź

Najlepsza odpowiedź

React the Dane spływają, więc Twoje opcje to:

  1. ChildContext Aby być rodzicem AuthContext.
  2. Przenieś logout Funkcja własnego kontekstu
function App() {
  const logout = () => {
    /*...*/
  };
  return (
    <LogoutContext value={logout}>
      <AuthContext>
        <ChildContext>
          <Template />
        </ChildContext>
      </AuthContext>
    </LogoutContext>
  );
}
1
Dennis Vash 20 październik 2020, 10:01