Skip to content

什么是React 路由?

React 路由是一个构建在 React 之上的强大的路由库,它有助于向应用程序添加新的屏幕和流。这使 URL 与网页上显示的数据保持同步。它负责维护标准化的结构和行为,并用于开发单页 Web 应用。 React 路由有一个简单的API。

为什么React Router v4中使用 switch 关键字 ? 虽然 <div> ** 用于封装 Router 中的多个路由,当你想要仅显示要在多个定义的路线中呈现的单个路线时,可以使用 “switch” 关键字。使用时,<switch>** 标记会按顺序将已定义的 URL 与已定义的路由进行匹配。找到第一个匹配项后,它将渲染指定的路径。从而绕过其它路线。

jsx
<switch>
    <route exact path='/' component={Home}/>
    <route path='/posts/:id' component={Newpost}/>
    <route path='/posts'   component={Post}/>
</switch>

React Router与常规路由有何不同?

常规路由React路由
每个视图对应一个新文件只涉及单个HTML也米娜
HTTP请求被发送到服务器并且接收对应的HTML页面进更改历史记录属性
用户实际在每个不同页面切换用户认为自己正在不同的页面间切换

react-router里的<Link>标签和<a>标签有什么区别

对比<a>,Link组件避免了不必要的重渲染

路由传参

标签

1、 使用props.params 传值

jsx
<Route path="/path/:id" component={App} />

//Link组件,路由跳转,类似于a标签
<Link to="/path/id">list</Link>

//子组件中获取参数
this.props.match.params.id

优点:简单快捷,并且,在刷新页面的时候,参数不会丢失。

缺点:只能传字符串,并且,如果传的值太多的话,url会变得长而丑陋。

2、使用query定义传值方式

jsx
<Route path="/query" component={App} />

const toParam ={
    pathname:"/query",
    query:"参数"
}
//在Link组件中定义参数
<Link to={toParam}>List</Link>

//在子组件中获取参数值
this.props.location.query

这种方式,可以直接传对象,单但是页面刷新后,参数丢失

3、state传值方式,和query相似:

jsx
<Route path="/state" component={App} />

const toParam ={
    pathname:"/state",
    state:"参数"
}
//在Link组件中定义参数
<Link to={toParam}>List</Link>

//在子组件中获取参数值
this.props.location.state

可传对象,页面刷新,参数丢失。

js

jsx
// 第一种方式:在父组件中,设置路由标签:
<Link to="/about/:id">About</Link>

// 第二种方式:在父组件中,设置点击事件:
<div onClick={this.click.bind(this)}>About</div>

//js
click(){
    this.props.history.push({ pathname: "/about", state: { id } });
}

子组件中获取参数
this.props.location.state.id

苏ICP备2025160170号-1 | 前端进化之路 | Released under the MIT License.