React Router Dom,useNavigate 未重定向到正确的 url 路径

2023-12-14

在较旧的 React Router Dom 版本中,如果用户登录,我可以使用此代码进行重定向:

history.push('/login?redirect=shipping')

Now in v6,我正在使用useNavigate函数而不是history.push,但它不起作用,因为它带我去/login/shipping代替/shipping。目前,这是我的导航代码:

let navigateCart = useNavigate() 
// some code here
navigateCart('/login?redirect=shipping') // the mistake is inside the parenthesis here but I don't know what it is!

这是我的路由器配置:

<BrowserRouter>
  <Container>
    <Routes>
      <Route path="/" element={<HomeScreen />} exact />
      <Route path="/login" element={<LoginScreen />} />
      <Route path="/profile" element={<ProfileScreen />} />
      <Route path="/shipping" element={<ShippingScreen />} />
    </Routes>
  </Container>
</BrowserRouter>

登录屏幕功能:

function LoginScreen() {

    let navigateLog = useNavigate()
    let location = useLocation()

    const [email, setEmail] = useState('')
    const [password, setPassword] = useState('')

    const dispatch = useDispatch()

    const redirect = location.search ? location.search.split('=')[1] : '/'
    

    const userLogin = useSelector(state => state.userLogin)
    const { error, loading, userInfo } = userLogin


    useEffect(() => {
        if (userInfo) {
            navigateLog(redirect)
        }
    }, [navigateLog, userInfo, redirect])

    const submitHandler = (e) => {
        e.preventDefault()
        dispatch(login(email, password))
    }

改变这一点navigateLog(redirect)线内的useEffect in LoginScreen对于这个:

navigateLog(`/${redirect}`);

在你的情况下,它重定向到/login/shipping代替/shipping,因为这就像你在打电话navigateLog("shipping"),并且没有/在前面,它被用作相对路径。这意味着它会考虑您当前的路径,在您的情况下恰好是/login.

Edit angry-fast-upe615

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Router Dom,useNavigate 未重定向到正确的 url 路径 的相关文章

  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • 为什么 JavaScript base-36 转换看起来不明确

    我目前正在编写一段使用 Base 36 编码的 JavaScript 我遇到了这个问题 parseInt welcomeback 36 toString 36 看来要回归了 welcomebacg 我在 Chrome 开发者控制台和 Nod
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • firebase :: 无法读取 null 的属性“props”

    你好 我正在尝试将react router与firebase一起使用 但它给了我这个错误 无法读取 null 的属性 props 这正是代码 我正在其中使用我的反应路由器 向下代码位于作为登录面板组件的组件上 else if this em
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • useCallBack 执行两次

    为什么 useCallback 钩子执行两次 我收到一条警告 建议我使用 useCallback 所以我正在尝试这样做 据我了解 useCallback 仅在我们传递给数组的对象更新时才会执行 所以我的目标是在加载令牌后让 websocke
  • 从 ThreadPoolTask​​Executor 获取可调用对象或将 Runnable 转换为 Callable

    我在用着线程池任务执行器用于执行我的任务 这些任务是Callable界面 我只想及时检查任务是否仍在池中 监视 怎么做 我知道我可以从线程池执行器但我怎样才能将 Runnable 转换为 Callable 呢 基本上我有这个可调用的 pub
  • 启用和禁用 Android 中的日期

    我在我的应用程序中使用日历 在我的应用程序中成功实现了日历 但问题是如何启用和禁用特定日期 例如 需要在所有月份中仅启用星期一或在所有月份中启用星期一和星期日 我的日历视图 import java util ArrayList import
  • psycopg2.sql 发生了什么?

    在 psycopg2 文档中它引用了sql充满乐趣的财产safely构造 SQL 字符串 然而我在 python 3 上的安装 应该是 PyPI 的最新版本 不包含这样的属性 from psycopg2 import sql ImportE
  • 如何在 matplotlib 中的特定日期绘制垂直线[重复]

    这个问题在这里已经有答案了 如何在特定日期向该图表添加垂直线标记 Week end是日期列 fig ax plt subplots figsize 20 9 thirteen plot line x Week end y OFF color
  • 在 PowerShell 中如何将文件从远程 PSsession 复制到另一台 Windows 服务器

    我正在尝试将文件夹从一台远程服务器复制到 PSSession 内的另一台服务器 它给出了诸如访问被拒绝之类的错误 我对两台服务器都有管理员权限 如果我在没有 PSSession 的情况下尝试它 它会起作用 在远程服务器中 PS C User
  • 如何将变量放置在内存中给定的绝对地址处(使用 GCC)

    RealView ARM C 编译器supports使用变量属性将变量放置在给定的内存地址处at address int var attribute at 0x40001000 var 4 changes the memory locate
  • 屏幕关闭时如何获取传感器数据?

    我正在尝试创建一个应用程序 使用服务在一定时间内跟踪设备的方向 当方向改变时 设备会发出声音 只要设备处于开启状态 此功能就可以完美运行 一旦我锁定设备或屏幕关闭 我就听不到声音 我想要的 我的服务代码是 public class Raka
  • 如何从多个 $_POST 数组插入 MYSQL 行

    我有一个带有 添加联系人 部分的表单 单击该部分后 它会在表单中添加另一行 其中还有 3 个输入框 jfiddle上的代码段 http jsfiddle net fmdx cYxYP HTML
  • 如何从 Tkinter 获取输入

    我正在使用 Tkinter 制作一个程序 其中用户输入以磅为单位的体重 然后输出以公斤为单位的体重 我在获取内容时遇到问题Entry来自用户 我正在计算磅换算为公斤clicked1 有人可以告诉我如何在那里获得条目输入吗 from Tkin
  • 为什么我保存的 D3 选择在某些情况下没有效果?

    我对如何保存 D3 选择供以后使用感到困惑 在下面的代码中 我的轴有一个 全局 变量 首次创建它们时我将它们保存到该变量中 后来 我可以将此变量用于某些事情 此处 设置一些文本 但不能使用其他变量 此处 更新比例 这仅在我显式 重新 选择轴
  • conda 更新 CondaHTTPError:HTTP 无

    跑步中途Conda Update all 更新停滞了 多个软件包已更新 现在 当我跑步时conda update all or conda update conda 我得到这样的回应 C Users AppData Local Contin
  • 使用 Indy 10 和 DELPHI 评估电子邮件

    我使用以下代码来评估消息 使用 INDY 10 组件收到的电子邮件消息的内容 正文 行 function LinesFromMsg aMsg TIdMessage TStrings var i Integer begin for i 0 t
  • 关于Java基本类型方法的问题

    我对 Java 中的原始类型以及将一种类型转换为另一种类型的方法感到困惑 比如说 如果我有一个整数并且想将其转换为字符串 我需要使用 Integer 或 String 的静态方法 例如 String valueOf some integer
  • Ansible 中的列表按自然字母数字顺序排序

    有没有办法以自然的方式对 Ansible 或 Jinja 中的列表进行排序 例如 这是列表 test test123 test12 test5 test1234test test22te 我需要它来考虑整个数字而不是单个数字 所以test1
  • 对于简单且可变的产品,以特定的 html 结构显示一些数据

    在 WooCommerce 中 我想创建一个函数 为每个变体或可变产品输出一个简单的数据 列表 或者 如果是一个简单的产品 那么该产品本身的细节 我需要为每个项目添加的详细信息是 regular price size attribute 用
  • 多个 BindingContext 在同一内容页上,两个不同的视图?

    我有一个 ContentPage 上面有两个 ContentView 我想将每个 ContentView 的绑定上下文设置为各自的 ViewModel 这是我对它们组合在一起的一个大型 ViewModel 的首选灵魂 MainPage
  • 如何在 JavaScript 中合并 TypedArray?

    我想合并多个数组缓冲区来创建一个 Blob 然而 如你所知 类型数组没有 推 或有用的方法 E g var a new Int8Array 1 2 3 var b new Int8Array 4 5 6 结果 我想得到 1 2 3 4 5
  • 重新安装 ruby​​gems

    如何重新安装 RubyGems 如中所述没有要加载的文件 rubygems LoadError 运行 Mac OS X 10 8 2 直接从源下载 我在尝试获取时遇到了很大的麻烦gem update system or gem instal
  • React Router Dom,useNavigate 未重定向到正确的 url 路径

    在较旧的 React Router Dom 版本中 如果用户登录 我可以使用此代码进行重定向 history push login redirect shipping Now in v6 我正在使用useNavigate函数而不是histo