zoukankan      html  css  js  c++  java
  • 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 />;
      }
    }
    
  • 相关阅读:
    Java基础知识
    jQuery的表单操作
    SSM——查询_分页
    jQuery实现查看删除
    SSM之Maven工程的搭建
    Mybatis使用@Param
    Mybatis简单的CURD
    Mybatis使用接口开发
    初入Mybatis
    SQL语句
  • 原文地址:https://www.cnblogs.com/neverc/p/9083342.html
Copyright © 2011-2022 走看看