react-router-dom@6的三种传参方式

3,251 阅读1分钟

react-router-dom@6的三种传参方式

1. 子路由携带形式

路由配置代码

function App() {
    return (
        <BrowserRouter>
            <Routes>
                <Route path={'/'} element={<Login/>} />
                <Route path={'/home/:id'} element={<Home/>} />
            </Routes>
        </BrowserRouter>
    )
}

原页面代码

const navigate = useNavigate()

const goHome = () => {
    navigate("/home/123")
}

目标页面代码

const params = useParams()

const back = () => {
    console.log(params.id)  //打印结果为 123
}

2. 问号(?)形式传参

这种形式不需要再配置路由代码

原页面代码

const navigate = useNavigate()

const goHome = () => {
    navigate("/home?id=123")
}

跳转页面代码

const [params] = useSearchParams()

const back = () => {
    console.log(params.getAll('id')[0])  //打印结果为 123
}

3.通过state传参

原页面代码


const navigate = useNavigate()

const goHome = () => {
    navigate("/home",{state:{id:123}})
}

目标页面代码

const location:any = useLocation()

const back = () => {
    console.log(location.state.id) //打印结果为123
}

使用ts时需要配置location的数据类型,上述中暂时配置为any