【发布时间】:2022-08-23 12:02:14
【问题描述】:
我正在使用 react-router-dom v6 并且我正在访问来自 location 对象的 from 值,它给出了 pathname 但在执行时导航(从,{replace:true})这没用。
const navigate = useNavigate();
const { state } = useLocation();
const from = state ? state.from.pathname : \'/\';
const [isDone, setIsDone] = useState(false);
useEffect(() => {
if (isDone) {
navigate(from, { replace: true }); //not working
}
}, [isDone]);
const Submit = async (e) => {
e.preventDefault();
let data = { email, password };
if (!email || !password) {
setMessage(\'Please Enter All Fields\');
} else {
setLoading(true);
return await axios
.post(\'/signin\', data)
.then((res) => {
if (res.data.message === \'Invalid Credentials\') {
setMessage(\'Invalid Credentials\');
}
if (res.data.message === \'Logged In\') {
setIsDone(true);
}
})
.catch((err) => {
console.log(err);
})
.finally(() => {
setLoading(false);
});
}
-
请澄清“不起作用”是什么意思。它是导航而不是替换吗?还是根本不导航?是否有任何控制台错误或 React 警告?
-
@DBS 没有导航,也没有警告和错误
-
您是否尝试过将
console.log(from)之类的内容放在navigate()上方的行中,以确保此时一切都按预期进行? -
我试过了,我得到了路径名
-
@HareePrasad 我认为来自 URL 的 URL 与当前 URL 相同,这就是它不重定向的原因。
标签: reactjs react-router