Возникли проблемы с UseContext с ReactJs, мне нужно изменить переменную состояния в одном компоненте и получить это обновленное состояние в другом компоненте.

Это мой App.js

function App() {
   const [patient, setPatient] = useState("1")

  return (
      <div className="App" >

        <Router>
          <Switch>
            <DepNamesContext.Provider value={{patient, setPatient}}  > 
            <Route exact path="/" >
              <HomePage   />
            </Route>
            <Route path="/EmployeeSurvey/:email/:firstName/:lastName/:code">
              <NormalSurvey />
            </Route>
            <Route  path="/VisitorSurvey/:email/:firstName/:lastName/:code" >
              <VisitorSurvey />
            </Route>
            <Route path="/NewVisitorSurvey/:email/:firstName/:lastName/:code">
              <NewVisitorSurvey />
            </Route>
            <Route path="/ConsentPage/:email/:firstName/:lastName/:code/:companyName">
              <Consent />
            </Route>
            <Route path="/Pass/:code/:name/:email">
              <Pass />
            </Route>
            <Route path="/Fail/:code">
              <Fail />
            </Route>
          
          </DepNamesContext.Provider> 

          </Switch>
        </Router>
       
      </div>
    );
  } 
export default App;

Это часть из Homepage.js

import { DepNamesContext } from "./DepNamesContext"
   const {setPatient,patient} = useContext(DepNamesContext);

Я бы использовал setPatientMinor(3), и он будет обновлен в компоненте homepage.js, но когда я попытаюсь получить доступ к состоянию пациента в компоненте VisitorSurvey.js, его исходное значение по-прежнему равно 1.


person nnmast    schedule 29.03.2021    source источник
comment
Предложение: посмотрите, сможете ли вы уменьшить размер примера. См. stackoverflow.com/help/minimal-reproducible-example.   -  person TrueWill    schedule 29.03.2021
comment
Контекст работает иначе: reactjs.org/docs/hooks-reference.html#usecontext Значение контекста изменяется путем изменения того, что вы передаете поставщику как value.   -  person Chris G    schedule 29.03.2021
comment
Есть ли причина, по которой вы помещаете Provider внутри Switch? когда я пытаюсь получить доступ к состоянию пациента в компоненте VisitorSurvey.js, оно по-прежнему имеет начальное значение 1. Что такое обе компоновки?   -  person Estus Flask    schedule 29.03.2021
comment
@ChrisG Это имеет смысл, я новичок в ReactJs, спасибо. есть ли у вас какие-либо предложения, как я могу решить проблему. Я пытался использовать Mobx и pullstate, но это не сработало.   -  person nnmast    schedule 29.03.2021
comment
@EstusFlask Нет причин, я мог бы выставить его снаружи, но это не решает проблему.   -  person nnmast    schedule 29.03.2021
comment
Дубликат: Как обновить контекст React из дочернего компонента ?   -  person Chris G    schedule 29.03.2021