我正在设置默认访问级别
但这里的问题是,当在useEffect中更改访问级别时,页面是以默认访问级别呈现的,我如何保持页面的呈现直到使用效果完成?
function MyApp({ Component, pageProps }: AppProps): JSX.Element {
const [role, setRole] = useState('candidate');
const auth = nookies.get()["auth"];
useEffect(() => {
if (auth) {
const parsedUser = JSON.parse(auth);
const { role_id } = parsedUser as unknown as CookieInfo;
if (role_id) {
const current_user_role = roles.find((x) => x.id === role_id)?.name || 'Candidate';
const aclRole = current_user_role.replace(' ', '').toLowerCase();
console.log('aclRole', aclRole, role_id, current_user_role);
setRole(aclRole);
}
}
}, [auth, role])
console.log('role', role);
let userId = 0;
if (auth) {
const parsedUser = JSON.parse(auth);
userId = parsedUser?.id;
}
// console.log('');
return (
<ThemeProvider theme={customTheme}>
我希望渲染停止,直到调用以下变量:
setRole(aclRole);
1条答案
按热度按时间yyyllmsg1#
有一个加载状态,如果加载仍在进行,则返回null。这可能是一个附加状态:
或者可能
role
状态就足够了,它只需要一些特殊的值来说明还没有使用它。null
或undefined
是常见的选择: