导航和重定向不重定向到反应路由器中的路径
P粉418214279
P粉418214279 2024-02-25 19:18:43
0
1
440

我有一个物流选项卡,如果 logisticData 值为 null,我会将页面重定向到 "/logistic" from ":logisticId/edit"

但是,当我执行此代码时,它不会重定向代码

function EditLogistic() {
  const { state } = useLocation();
  const logisticData = state;

  console.log(logisticData)

  const navigate = useNavigate();

  if (!logisticData) {
    console.log("empty")
    navigate('/logistic')
    redirect('/logistic')
  }
}

我想知道我是否做错了什么,或者是否有任何方法可以实现这一目标?

P粉418214279
P粉418214279

全部回复(1)
P粉352408038

redirect实用函数仅在数据路由器的加载器和操作函数中有效,在React组件中无效。

您可以通过 useEffect 挂钩中的 navigate 函数发出命令式导航操作:

import { useLocation, useNavigate } from 'react-router-dom';

function EditLogistic() {
  const { state } = useLocation();
  const logisticData = state;

  const navigate = useNavigate();

  useEffect(() => {
    if (!logisticData) {
      navigate("/logistic", { replace: true });
    }
  }, [logisticData, navigate]);

  ...
}

或者您可以通过 Navigate 组件发出声明性导航操作:

import { Navigate, useLocation } from 'react-router-dom';

function EditLogistic() {
  const { state } = useLocation();
  const logisticData = state;

  if (!logisticData) {
    return ;
  }

  ...
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板