我有一个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>
);
};