美文网首页
react-router-4初级学习

react-router-4初级学习

作者: 黄飘fighting | 来源:发表于2018-12-26 17:41 被阅读0次

简介

react-routerReact Training(官网)和许多令人惊叹的贡献者(github)开发和维护。

参考文档

React Router v4 版本 完全指北

安装环境

  • 创建如果您需要创建一个,最简单的入门方法是使用名为Create React App的流行工具。
  • Web应用程序中使用的所有组件react-router-dom
    npm install --save-dev react-router-dom

基础属性

1.路由器

对于Web项目,react-router-dom提供<BrowserRouter><HashRouter>路由器。一般来说,<BrowserRouter>响应请求的服务器路由,<HashRouter>静态文件服务器路由。

import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  DOM
);

2.路由匹配

有两个路由匹配组件:<Route><Switch><Switch>将迭代其所有子<Route>元素,并仅渲染与当前位置匹配的第一个子元素。

import React, { Component } from 'react';
import Hello from './Content/Hello'
import State from './Content/State'
import Event from './Content/Event'
import NoMatch from './Content/NoMatch'
import { Route, Switch } from "react-router-dom";
class Content extends Component {
    constructor() {
        super()
    }
    render() {
        return <Switch>
            <Route exact path="/" component={Hello} />
            <Route path="/State" component={State} />
            <Route path="/Event" component={Event} />
            <Route component={NoMatch} />
            <Event />
        </Switch>
    }
}
export default Content;

2.<router>渲染组件属性

<router>有三个属性选择渲染组件,分别是component、render、children

const Home = () => <div>Home</div>;
const App = () => {
  const someVariable = true;

  return (
    <Switch>
      {/* these are good */}
      <Route exact path="/" component={Home} />
      <Route
        path="/about"
        render={props => <About {...props} extra={someVariable} />}
      />
      {/* do not do this */}
      <Route
        path="/contact"
        component={props => <Contact {...props} extra={someVariable} />}
      />
    </Switch>
  );
};

3.导航

React Router提供了一个<Link>组件来在您的应用程序中创建链接。<NavLink>是一种特殊类型。任何时候你想强制导航,你可以渲染一个<Redirect>

<Link to="/">Home</Link>
//<a href='/'>Home</a> 
<NavLink to="/react" activeClassName="hurray">
  React
</NavLink>
// <a href='/react' className='hurray'>React</a>
<Redirect to="/login" />

API

<withRouter>

访问history对象的属性和最近<Route>matchwithRouter高阶组件。
tip:它就是个高阶组件,组要在props上加载history对象。

import React, { Component } from 'react';
import {withRouter} from 'react-router-dom'
class Footer extends Component {
    constructor() {
        super()
        this.goBack = this.goBack.bind(this)
    }
    goBack(){
        console.log("goback",this.props)
        this.props.history.go(-1)
    }
    render() {
        return (
            <div>
                <button onClick={this.goBack}>返回</button>
                {this.props.children}
            </div>
        )
    }
}
export default withRouter(Footer)

相关文章

网友评论

      本文标题:react-router-4初级学习

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