美文网首页
react-router-dom 及组件生命周期

react-router-dom 及组件生命周期

作者: 天涯笑笑生 | 来源:发表于2018-07-27 14:42 被阅读0次

注:V4

一、react-router-dom 基本组件

路由器 Routers

  • BrowserRouter 响应请求服务
  • HashRouter 静态文件服务

注:两者都只能有一个一级节点,且都会为你创建一个特有的history

路由匹配 Route Matching

  • Route
    根据path 匹配当前路径,然后根据匹配结果渲染component组件,如果未匹配到任何一个,则渲染为空,如果无path则可以匹配所有路径
  • Switch
    对于可能匹配到多个结果的情况,匹配时遍历被<Switch>包裹的所有<Route>,渲染第一个匹配结果

注:一般在<Switch>子节点中加无path<Route>,置于最后,作为404 页面组件匹配

二、组件生命周期

import React, {Component } from 'react';
import './App.css';

import {
    Link,
    Route,
    BrowserRouter as Router
} from 'react-router-dom'


class Page1 extends React.Component{

    constructor(props){
        super(props)
        console.log('Page1 Constructor')
    }

    componentDidMount(){
        console.log('Page1 Mount')
    }
    componentWillUnmount(){
        console.log('Page1 Unmount')
    }

    render(){
        return <h1>Page1</h1>
    }

}

class Page2 extends React.Component{

    constructor(props){
        super(props)
        console.log('Page2 Constructor')
    }

    componentDidMount(){
        console.log('Page2 Mount')
    }
    componentWillUnmount(){
        console.log('Page2 Unmount')
    }

    render(){
        return <h1>Page2</h1>
    }

}

class Home extends React.Component{

    constructor(props){
        super(props)
        console.log('Home Constructor')
    }

    componentDidMount(){
        console.log('Home Mount')
    }
    componentWillUnmount(){
        console.log('Home Unmount')
    }

    render(){
        return (
            <div>
                <ul>
                    <li><Link to="/page1">Page1</Link></li>
                    <li><Link to="/page2">Page2</Link></li>
                </ul>
            </div>
        )
    }

}

class App extends Component {

    constructor(props){
        super(props)
        console.log('App Constructor')
    }

    componentDidMount(){
        console.log('App Mount')
    }
    componentWillUnmount(){
        console.log('App Unmount')
    }

  render() {
    return (
          <Router>
              <div>
                <Route path='/' exact={true} component={Home}/>
                <Route path='/page1' component={Page1}/>
                <Route path='/page2' component={Page2}/>
              </div>
          </Router>
    );
  }
}

export default App;
进入Home 界面 点击Page1 返回Home

注:依次可以看出,每次页面组件都会经历完整的生命周期(其他周期函数未写,可自行脑补),对于大型应用,用户按需加载,可以增加响应速度,提升用户体验,但是对于小型应用(特别是需要频繁切换页面),算是有点浪费运存

相关文章

  • react-router-dom 及组件生命周期

    注:V4 一、react-router-dom 基本组件 路由器 Routers BrowserRouter 响应...

  • React 生命周期

    React生命周期如下图所示: 如上图,react生命周期主要可以分组件挂载、组件更新及组件卸载三个部分。 一、组...

  • React Native 框架基础

    原文参考及摘录 - React Native的极简手册 组件的生命周期 组件的生命周期分成三个状态: React ...

  • ReactNative-组件的生命周期

    一、RN组件的生命周期 概要 组件的生命周期描述了其从生成到消亡所经历的一系列状态。深入理解组件的生命周期及相关回...

  • react路由

    安装 npm i react-router-dom -S 路由组件 BrowserRouter as Router...

  • React路由

    安装 npm i react-router-dom -S 路由组件 BrowserRouter as Router...

  • react的生命周期-07

    reace生命周期函数:组件加载之前,组件加载完成,组件更新数据,及组件销毁时触发的一系列的方法。 1、组件加载触...

  • react项目引入路由

    1.安装react-router-dom 2.路由组件:containers/register/register....

  • 1组件的生命周期

    组件的生命周期:组件从创建到销毁的过程称为组件的生命周期。组件的生命周期通常分为三个阶段: 组件的挂在阶段。 组件...

  • Flutter 生命周期研究与应用

    Flutter 生命周期包括了组件的生命周期以及App的生命周期。 一、组件生命周期 一个flutter组件主要分...

网友评论

      本文标题:react-router-dom 及组件生命周期

      本文链接:https://www.haomeiwen.com/subject/tlhddftx.html