我有一个功能组件
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>
);
};
setUserInSystem
或setUserInfo
不会导致重新渲染吗? - Jono