У меня есть функциональный компонент App
с крючком useEffect
, и я пытаюсь заставить <Redirect>
дочерний компонент повторно визуализировать при изменении состояния, в частности вызов setUserInSystem
, который должен обновить userInSystem
, на который явно ссылаются в методе визуализации. Однако компонент не перерисовывается при изменении userInSystem
, и я не могу понять почему. (Примечание: обе асинхронные функции getUserInfo
и getUserByWorkEmail
работают должным образом и получают правильные данные.)
const App = (props) => {
const { authState, authData } = props;
const [signedIn, setSignedIn] = useState(false);
const [userInfo, setUserInfo] = useState(undefined);
const [userInSystem, setUserInSystem] = useState(false);
useEffect(() => {
setSignedIn(!(authState !== 'signedIn'));
const fetchUser = async () => {
const data = await getUserInfo();
const userFound = await getUserByWorkEmail(data);
setUserInSystem(userFound);
setUserInfo(data);
};
if (authState === 'signedIn') {
fetchUser();
}
}, [authState]);
return (
<div>
<BrowserRouter>
<Switch>
<Redirect
exact={true}
path="/"
to={userInSystem ? '/dashboard' : '/unverified'}
/>
</Switch>
</BrowserRouter>
</LayoutProvider>
</div>
);
};