• React从入门到放弃(5):ReactRouter4


    快速入门

    安装:npm i -S react-router react-router-dom

    GitHub:ReactTraining/react-router

    React Router中有三种类型的组件:路由器组件(BrowserRouter),路由匹配组件(Route)和导航组件(Link)。

    路由器

    每个React Router应用程序的核心应该是一个路由器组件。

    对于Web项目,react-router-dom提供BrowserRouterHashRouter路由器。

    路由器会包含所有路由组件。需要注意路由器节点下只能一个根节点。

    路由匹配组件

    Route:

    path路径(string): 路由匹配路径。(没有path属性的Route 总是会 匹配);
    exact精准(bool):为true时,则要求路径与location.pathname必须完全匹配;
    strict严格(bool):为true时,有结尾斜线的路径只能匹配有斜线的location.pathname;

    strict示例:

    路径 location.pathname strict 是否匹配
    /one/ /one true
    /one/ /one/ true
    /one/ /one/two true

    路由示例:

    import {
        HashRouter as Router,
        Route,
        Link,
        NavLink,
        Switch
    } from 'react-router-dom';
    
    import App from './App.js';
    
    
    function NavBar(){
        return (
            <Router>
                <div>
                    <Route component={Nav} />
                    <Switch>
                        <Route exact path='/' component={() => (<div>hello</div>)} />
                        <Route path='/app' component={App} />
                    </Switch>
                </div>
            </Router>
        );
    }
    

    导航组件

    Link:在应用中,提供导航功能

    NavLink:Link的一个特殊版本,当匹配指定URL的时候,会给元素添加style

    示例:

    <Link to="/profile"/>
    <NavLink to="/profile" activeStyle={{color:'red'}}/>
    

    Code Split

    使用Router的Code Split(按需加载)依赖webpack(默认支持)、babel-plugin-syntax-dynamic-import和react-loadable。

    babel-plugin-syntax-dynamic-import: 意味着Babel处理时不会做任何额外的转换。该插件只是允许Babel解析动态导入

    npm i babel-plugin-syntax-dynamic-import react-loadable -S

    .bashrc:

    {
      "presets": [
        "react"
      ],
      "plugins": [
        "syntax-dynamic-import"
      ]
    }
    

    代码示例:

    import Loadable from 'react-loadable';
    
    function Loading(){
      return (
        <div> Loading... </div>
      )
    }
    
    const Clock = Loadable({
      loader: () => import('./Clock'),
      loading: Loading,
    });
    
    export default class LoadableClock extends React.Component {
      render() {
        return <Clock />;
      }
    }
    
  • 相关阅读:
    假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单的客车售票系统。
    用lua求两个数组的交集、并集和补集。
    Lua 将数组中的某些value设置为nil,打印#数组的长度遇到的问题。
    用Lua编写ACM算法竞赛开灯问题
    EXCEL基础
    微服务的服务粒度该如何权衡
    Linux装cudnn
    How To Install Jenkins on Ubuntu 20.04
    获取heidisql保存的密码
    Spring Framework 远程命令执行漏洞复现(CVE202222965)
  • 原文地址:https://www.cnblogs.com/neverc/p/9083342.html
Copyright © 2020-2023  润新知