我有两个组件 Auth 和 Main,分别代表应用的登录屏幕和主屏幕。这两个组件均由组件 AuthOrApp 调用,组件根据用户的状态 ID 选择显示哪一个。
//component AuthOrApp
import React, { useEffect, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { login } from '../store/userSlice';
import { addShops } from '../store/shopsSlice';
import Auth from '../screens/Auth';
import Main from '../navigators/Main';
import { getData } from '../common';
export default props => {
const [start, setStart] = useState(true);
const dispatch = useDispatch();
const user = useSelector(state => state.user);
const fetchData = async () => {
if (!user.id) {
const userData = await getData();
if (userData.id) {
dispatch(addShops(userData.filterShops));
dispatch(login({ name: userData.name, id: userData.id }));
} else {
setStart(false);
}
} else {
setStart(false);
}
}
useEffect(() => {
fetchData();
}, [user])
return (!user.id) ? <Auth /> : <Main />;
}
退出时,用户状态id被清除,应用返回登录界面,问题在于它再次挂载了Auth和Main组件。
我不明白为什么它会重新组装组件而不是直接渲染。有人能给我解释一下吗?我该如何阻止它再次安装?