React-router(1)基础用法

x33g5p2x  于2022-03-06 转载在 其他  
字(2.0k)|赞(0)|评价(0)|浏览(544)

0、参考文献

React Router 4 简易入门

一个中文文档,但不确定是否是官方的,例子比较多

初探 React Router 4.0 这个对标签的说明比较详细

react-router v4 如何静态传值给子组件

render和component的区别

0.1、React-router 安装

这里的版本号是 “react-router-dom”: “^4.2.2”

安装(不需要安装 react-router,直接安装 react-router-dom 就可以了)

  1. npm install --save react-router-dom

下面这几行引自https://www.jianshu.com/p/e3adc9b5f75c

  • react-router React Router 核心
  • react-router-dom 用于 DOM 绑定的 React Router
  • react-router-native 用于 React Native 的 React Router
  • react-router-redux React Router 和 Redux 的集成
  • react-router-config 静态路由配置的小助手

1、基本DEMO

DEMO地址
参考 1.baseDemo.js

首先引入对应的模块

  1. import {
  2. HashRouter as Router,
  3. Route,
  4. Link
  5. } from 'react-router-dom'

这三个都是标签名。

  1. Router 表示路由包裹标签,另外2个应该放在这个标签里;
  2. Link 表示导航标签,就是说点击这个后,会将 url 进行切换;
  3. Route 表示模块标签,当当前的 url 符合 Route 标签的设置时,会将该标签显示出来;

基本示例:

  1. import React from "react";
  2. import {
  3. HashRouter as Router,
  4. Route,
  5. Link
  6. } from 'react-router-dom'
  7. const First = () => <div>第一个示例的第【1】个路由,第一个路由在第一个和第二个url里都会显示,但不在第三个显示</div>
  8. const Second = () => <div>第一个示例的第【2】个路由,只在第二个url里显示</div>
  9. const Third = () => <div>第三个示例</div>
  10. class BaseDemo extends React.Component {
  11. render() {
  12. return <div>
  13. <h3>React-router基础示例</h3>
  14. <h3>路由数据被存储在 this.props.match 里,这是其中的值{JSON.stringify(this.props.match)}</h3>
  15. <Router>
  16. <div>
  17. {/* this.props.match.url 表示当前url */}
  18. <li><Link to={`${this.props.match.url}/1`}>示例1</Link></li>
  19. <li><Link to={`${this.props.match.url}/2`}>示例2</Link></li>
  20. <li><Link to={`${this.props.match.url}/3`}>示例3</Link></li>
  21. <Route path={`${this.props.match.url}/1`} component={First}/>
  22. <Route path={`${this.props.match.url}/2`} component={First}/>
  23. <Route path={`${this.props.match.url}/2`} component={Second}/>
  24. <Route path={`${this.props.match.url}/3`} component={Third}/>
  25. </div>
  26. </Router>
  27. </div>
  28. }
  29. }

解释:

  1. Router 标签内,只能放一个元素,一般是放一个 div 标签,然后其他标签放这个 div 标签里;
  2. Link 标签是导航标签,类似 <a></a> 标签,点击后会跳转 url;
  3. Route 标签是路由组件标签,当 path 属性和当前 url 相同时,会自动显示 component 属性中匹配的标签(所有匹配成功的都会显示);

简单来说,就是 点击 Link 标签跳转 url,然后显示对应的 url 的组件。

相关文章