const location = useLocation();
const { id } = useParams();
const queryString = (...parse some data with location)
let key = '';
switch (id) {
case 'first':
key = queryString.text;
break;
default:
break;
}
const idParam = useMemo(() => {
switch (p) {
case 'a':
return {
id,
key,
};
default:
return { id: '', key: '' };
}
}, [id, key]);
useEffect(() => {
const f = async () => {
try {
... ajaxCall ...
const token = result.data.token;
if (token) {
login... change location
} else {
no login...
}
} catch (error) {
setError(true);
} finally {
setLoading(false);
}
};
f();
}, [idParams]);
return (
<>
<LoadingBox isLoading={loading} />
{isError && <NonAuthPage />}
</>
);
};
我用 /:id?someParam=text 用 react-router 写了一些反应代码 我用这个值调用ajax函数。 它总是渲染一次? 如果我写了 id 值和参数,useLocation、useParams 总是返回值? 我担心 id,并且键值是 init undefined 并发送不需要的 ajax 调用。**