首页 > 其他分享 >react-router-dom v6 路由参数

react-router-dom v6 路由参数

时间:2022-08-23 11:47:29浏览次数:50  
标签:const dom navigate react state v6 id

1.通过state传参(HashRouter会丢失,BrowserRouter不会丢失)

传参页面

import { useNavigate } from "react-router-dom";

const navigate = useNavigate()

navigate("/home",{state:{id:123}})

接收页面

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

const location = useLocation()

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

由于state刷新后值还存在,有时需要删除值

useEffect(() => {
    if (location.state?.id) {
      form.setFieldsValue({ id: location.state.id});
      let state = { ...location.state };
      delete state.id;
        navigate({ ...location, state });
    }
  }, [form, history, location]);

2. 问号(?)形式传参(跳转新标签页只能用此携带参数)

传参页面

import { useNavigate, createSearchParams } from "react-router-dom";

const navigate = useNavigate()

navigate("/home?id=123")
navigate({
    pathname: "/home", search: `?id=123` 
})

navigate({
    pathname: "/home",
    search: `?${createSearchParams({id:123})}`
})
 

接收页面

import { useSearchParams } from "react-router-dom";

const [searchParams, setSearchParams] = useSearchParams();

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

3.params传参 (restful格式),需要在Route上显示写明 :params

传参页面

import { useNavigate } from "react-router-dom";  

<Route path={'/home/:id'} element={<ToPage/>} />

navigate(`/home/${id}`)

接收页面

import { useParams } from "react-router-dom";

const ToPages = () => {
const { id } = useParams();
console.log(id)
}

 

 

标签:const,dom,navigate,react,state,v6,id
From: https://www.cnblogs.com/janni/p/16615163.html

相关文章

  • react三大核心之一props
    -html标签可以在标签上写自定义属性,那么react的组件,也可以像传属性一项,给组件传props;react组件接收到传入的属性后,会自动塞进实例的props属性中,通过this.props可以拿到外......
  • React报错之React Hook 'useEffect' is called in function
    正文从这开始~总览为了解决错误"ReactHook'useEffect'iscalledinfunctionthatisneitheraReactfunctioncomponentnoracustomReactHookfunction",可以将......
  • 实现最简单的 React DOM Diff 算法
    实现最简单的ReactDOMDiff算法本文写于2022年08月22日定义VNode与VNodeList类型首先我们定义一个简单的VNode类型。typeFlag="Placement"|"Delet......
  • 手写实现react hooks
    实现一些简单的reacthooks........在钩子函数中不要使用if判断,避免钩子错乱建立数组映射,建立多组钩子初始化数组和索引,全局使用lethookIndex=0lethookState=[......
  • Uncaught DOMException: Failed to execute 'insertRule' on 'CSSStyleSheet': Cannot
    在动态的向某个元素添加动画的过程中,使用insertRule的方式插入,浏览器报错。具体报错如下:具体原因:这篇文章说的比较清楚了解决方案:insertCSSRule(element,cssStyle){......
  • LeetCode 811. Subdomain Visit Count
    原题链接在这里:https://leetcode.com/problems/subdomain-visit-count/题目:Awebsitedomain "discuss.leetcode.com" consistsofvarioussubdomains.Atthetople......
  • react面试题
    react事件机制在得到dom树之后,react会处理属性上是否有事件,react不会把事件绑定到真正的节点上,而是把所有的事件绑定在document(最外层节点)上,部分事件除外,如audio、video的......
  • React 源码-React 事件全解
    事件系统reactv17事件绑定事件绑定在函数setInitialDOMPropertiessetInitialDOMProperties将在complete阶段执行functionsetInitialDOMProperties(tag:st......
  • vscode中react标签自动补全
    在vscode中编写react时,发现标签没有自动补全,写起来不太灵活,查资料发现:默认在js文件中JSX语法无法自动补全,解决方法如下:文件=》首选项=》设置搜索"emmet.includeLanguages"......
  • react组件三大核心之一state
    -<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="wi......