React路由安装使用和多种方式传参

安装路由
npm i react-router-dom -S

引入路由
import {
BowserRouter as Router,
Route,
Switch,
...
} from "react-router-dom"

整个项目顶层需要用<Router>包裹 并且 <Router>组件内只能有一个直接子级元素
例如:
let App = props => (<Router>
<div>
<Route path="xxx" component={xxx} />
<Route path="xxx" component={yyy} />
...
</div>
</Router>)

render(<App />,document.getElementById("app"))

使用BowserRouter需要对服务器做配置 对于webpack-dev-server而言 需要添加属性
devServer : {
conentBase:"",
...,
historyApiFallback:true,
disableHostCheck: true,
}

Route组件有下列属性
path : 路径
component : 组件
redirect : 重定向
exact : 严格匹配

react中 4.0之后的路由采用的是分布式路由 <Route> 本身即路由窗口
在该版本的路由中 默认即多视图路由
只要多个Route 配置相同路径 即可在同一路径下加载多个组件

若只希望一个路径下仅加载一个组件 用<Switch>包裹住多个<Route>即可
例如:
<Switch>
<Route path="xxx" component={xxx} />
<Route path="xxx" component={yyy} />
</Switch>
此时 路径为xxx时 仅加载xxx而并非加载 xxx 和 yyy

路由跳转
标签跳转
<Link to={ {pathname:"/home"} }>首页</Link>

js跳转(编程式导航)
this.props.history.push()
this.props.history.replace()
值得注意的是 并非所有组件的props都有history属性
仅在通过<Route>加载进来的组件 props下才会存在history属性

如果props不存在history属性的子组件也想通过js实现路由跳转
可用props有history属性的父组件通过props传递给子组件即可

路由传参
search传参(问号传参)
<Link to{ {pathname:"/home",search:data }></Link>
接收参数
this.props.location.search 接收即可
只是此时 search为字符串类型格式如下: username=zhuiszhu&age=18
需要我们手动转换成对象才能方便使用

params传参(动态路由)
路由配置
<Route path="/detail/:id" />

传递参数
let goodsID = 123
<Link to={pathname:"/detail/"+goodsID} ></Link>

接收参数
this.props.match.params.id
此处props的math同上述中的history属性

原文地址:https://www.cnblogs.com/lishixiang-007/p/11337446.html

时间: 2024-10-06 22:31:40

React路由安装使用和多种方式传参的相关文章

同一路由带参刷新,以及params和query两种方式传参的异同

同一路由应该不叫跳转了吧,就先叫刷新好了. 需求及问题 今天做web课设有这样一个需求: 在导航栏中一项叫做教师队伍一级菜单下,有三个二级菜单,分别为教授.副教授.讲师.这三个二级菜单分别对应一个页面.但是由于显示的排版相同,只是教师信息不同,故想用同一页面,通过选择不同的菜单,传入不同的参数,显示不同的信息. 刚开始的想法是,在实例创建阶段,也就是created阶段将导航栏传给子组件的参数获取到 父组件: this.$router.push({ path: '/jsjj', query:{ i

C#使用WebClient获取给定地址的内容(POST方式传参)

见下方代码: 1 string url = "https://www.baidu.com";//源地址 2 System.Net.WebClient WebClient = new System.Net.WebClient(); 3 var parameter = "x=7&y=8&z=9";//参数 4 byte[] parameters = Encoding.UTF8.GetBytes(parameter);//UTF8编码 5 WebClien

vue路由跳转的多种方式

1.router-link to 跳转 <router-link to="/child"><button>跳转</button></router-link> 2.this.$router.push("ComponentName") ,通过路由名称跳转 <button @click="go()">跳转</button> go(){ this.$router.push("

BBOSS框架使用jquery方式传参到后台的时候,要注意的事项

BBOSS框架,从前台传到后台的时候,参数要以这种方式: public String initAddOrModExtendUser(HttpServletRequest request, @RequestParam (name = "act") String act,HttpServletResponse response, ExtendUserDO extendUserDO){} 其中@RequestParam(name = "act") String act,就

在 WinForm 中打开页面采用POST方式传参http。可以多个参数传递,返回json字符串

//调用方法 Dictionary<string, string> postData = new Dictionary<string, string>(); postData.Add("user", "aaa"); postData.Add("pass", "bbb"); GetPageByPost("http://www.xxx.com/send.aspx", postData, 

window.open打开新窗体并用post方式传参

function openPostWindow(url,data,name){ //url要跳转到的页面,data要传递的数据,name新窗体名 var tempForm = document.createElement("form"); tempForm.id="tempForm1"; tempForm.method="post"; tempForm.action=url; tempForm.target=name; var hideInput

react中的传参方式

react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a name='a' age={16}/>,app) 在渲染的时候,直接给挂载的组件传参. 2,父子传参 父子传参可以用props和ref两种方式,1,props方式传参,父组件通过改变自己的参数并且通过props将状态传递给子组件,并在子组件中显示.2,通过ref传参,这种方式是通过子组件自己的方法改变自己的

vue 路由传参的三种基本模式

路由是连接各个页面的桥梁,而参数在其中扮演者异常重要的角色,在一定意义上,决定着两座桥梁是否能够连接成功. 在vue路由中,支持3中传参方式. 场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取对应li的数据,显示相应的正确的内容. 父组件中: <li v-for="article in articles" @click="getDescribe(article.id)"> 方案一: getDescribe(id) { // 直接调用$

vue-router路由传参之query和params

首先简单来说明一下$router和$route的区别 //$router : 是路由操作对象,只写对象 //$route : 路由信息对象,只读对象 //操作 路由跳转 this.$router.push({ name:'hello', params:{ name:'word', age:'11' } }) //读取 路由参数接收 this.name = this.$route.params.name; this.age = this.$route.params.age; 1·query传递参数