reactjs 重定向react-router-dom v6

2exbekwf  于 2023-04-29  发布在  React
关注(0)|答案(4)|浏览(157)

我有一个问题,在youtube上观看使用history.push('/login?redirect=shipping')的视频,我如何使用navigate修改它,因为如果我使用字符串navigate ('/ login?redirect=shipping')即使登录它也会返回主页,而不会进入发货页面。
我是这样解决这个问题的:

const checkoutHandler = () => {
       if(!userInfo){
          navigate('/login')
       } else{
          navigate('/shipping')
       }
    }
dffbzjpn

dffbzjpn1#

你的解决方案很好。我能填补一些空白吗?
1.我们需要获取用户的状态,以检查用户是否登录,以继续执行if语句。
1.在此之后,您的解决方案将起作用。

import React from 'react'
import { useNavigate } from 'react-router-dom'
import { useSelector } from 'react-redux'
//....some imports

const CartScreen = () => {
//.......some code before
  const navigate = useNavigate()
  const userLogin = useSelector((state) => state.userLogin)
  const { userInfo } = userLogin

  const checkoutHandler = () => {
    if (!userInfo) {
    navigate('/login')
    } else {
      navigate('/shipping')
    }
  }

  //...return JSX...
jhdbpxl9

jhdbpxl92#

”””试试这个。

const navigate = useNavigate()
const checkoutHandler = () => {
    navigate('/signin?redirect=/shipping')
}
3wabscal

3wabscal3#

这个问题你解决了没有?如果你也面临同样的问题,那么我建议你去你的登录页面,并作出一些改变。
导入useHistory和useLocation:

import { Link, useHistory, useLocation } from 'react-router-dom'

然后在函数中应用这个:

const history = useHistory();
const location = useLocation();
dm7nw8vv

dm7nw8vv4#

试试这个。..

navigate ('/login?redirect=/shipping')

在redirect=之后添加正斜杠'/',然后再发货,这样做,第一个登录路由将被执行,然后它将重定向到发货。

相关问题