react |
您所在的位置:网站首页 › 路由传参的两种方式 › react |
编程式导航 导入一个 useNavigate钩子函数执行 useNavigate 函数得到 跳转函数在事件中执行跳转函数完成路由跳转 import { useNavigate } from "react-router-dom"; // 直接在函数式组件中调用 传入路由path直接开始跳转 navigate("/page1");场景:跳转路由的同时,有时候要需要传递参数 由于v6把旧版本中的路由组件能收到的三个参数(Location,history,match) 移除了,所以 不能直接使用this.props.location.pathname 获取到当前路由。而且 withRouter也移除 了。 那么如何传参呢?请往下看: 路由传参 1,searchParams传参search 传参的方式比较简单,参数的形式以 问号拼接 到地址后面 传参 import { useNavigate } from "react-router-dom"; const Login: React.FC = (props: any) => { // 提交按钮 const onFinish = () => { // 1,search传参 navigate("/page1?name=Eula&age=18"); }; }取参 import { useSearchParams } from "react-router-dom"; const Login: React.FC = (props: any) => { const onFinish = () => { // 问号传参的获取方式 let [searchParams, setSearchParams] = useSearchParams() console.log(searchParams.get('name')) // "Eula" console.log(searchParams.get('age')) // 18 }; } 2,params 传参params 方式传参要求会多一些,需要我们在路由表配置的位置添加一个 参数占位。 路由表配置的位置添加参数占位 { path: "/", element: withLoadingComponents(), children: [ { path: "/page1/:name/:age",//注意这里 可以占位多个 element: withLoadingComponents() }, ] },传参 import { useNavigate } from "react-router-dom"; const Login: React.FC = (props: any) => { // 提交按钮 const onFinish = () => { // params 传参 navigate("/page1/Eula/18"); }; }取参 import { useParams } from "react-router-dom"; const Login: React.FC = (props: any) => { const onFinish = () => { // 使用useParams 函数 const params = useParams() console.log("params:",params);// 打印 { "name": "Eula", "age": "18"} }; } 3,state传参使用state传参时,参数需要放到state对象里面; 注意:此时路由上不能有params 传参时的参数占位,否则无法跳转; 传参 import { useNavigate } from "react-router-dom"; const Login: React.FC = (props: any) => { // 提交按钮 const onFinish = () => { // state 传参 navigate("/page1",{ state: {name:'Eula',age:"18"}}); }; }取参 import { useLocation } from "react-router-dom"; const Login: React.FC = (props: any) => { const onFinish = () => { // 获取navigate中传递的state中的信息 let location = useLocation(); console.log("params:",location); }; }打印如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |