Rumah > hujung hadapan web > tutorial js > React路由如何搭建demo?react搭建路由demo的详细介绍

React路由如何搭建demo?react搭建路由demo的详细介绍

寻∝梦
Lepaskan: 2018-09-11 11:45:43
asal
2682 orang telah melayarinya

本篇文章主要的讲述了关于react搭建路由demo的详情。还有关于项目中react-router的介绍,接下来我们一起来看这篇文章吧

关于react-router网上有很多介绍,在这里必要唠叨,其中在项目中react-router和react-router-dom功能是一样的,引用一个就可以了。

1、react-router4.0以上的介绍。

    发现一篇文章写得不错,在这里也必要唠叨一次了。请阅:初探 React Router 4.0

2、搭建的环境

     a、使用create-react-app搭建

      b、版本如下:

{
  "name": "react-project-router",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.4.1",
    "react-dom": "^16.4.1",
    "react-router-dom": "^4.3.1",
    "react-scripts": "1.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}
Salin selepas log masuk

3、文件目录结构

32.png

4、index.js

import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter} from 'react-router-dom';
import './index.css';
import Root from './router/Routes';
import registerServiceWorker from './registerServiceWorker';
const mountNode = document.getElementById('root');
ReactDOM.render(
    <BrowserRouter>
        <Root />
    </BrowserRouter>,
    mountNode
);
registerServiceWorker();
Salin selepas log masuk

5、App.js

/*
   App 应用总容器
*/
import React, { Component } from 'react';

class App extends Component {
    render() {
        return <p>{this.props.children}</p>;
    }
}
export default App;
Salin selepas log masuk

6、Router文件,路由配置

/*
   Root, Router 配置
*/
import React from 'react';
import { Route, Switch, Redirect } from 'react-router-dom';
import App from './../App';
import Test from './../containers/Test';
import Home from './../containers/Home';
import Message from './../containers/Message';
const Root = () => (
   <p>
      <Switch>
         <Route
            path="/"
            render={props => (
               <App>
                  <Switch>
                     <Route path="/" exact component={Home} />
                     <Route path="/home" component={Home} />
                     <Route path="/test" component={Test} />
                     <Route path="/message/:id" component={Message} />
                      {/*路由不正确时,默认跳回home页面*/}
                     <Route render={() => <Redirect to="/" />} />
                  </Switch>
               </App>
            )}
         />
      </Switch>
   </p>
);
export default Root;
Salin selepas log masuk

7、相关组件代码(想看更多就到PHP中文网React参考手册栏目中学习)

/*
   Home 主页
*/
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
class Home extends Component {
   render() {
      return (
          <p id="home-container">
              {/*search,state可以自定义,获取方法:this.props.location.search,this.props.location.state*/}
              <Link to={{ pathname: &#39;/test&#39;, search: &#39;?name=homename&#39;, state: { mold: &#39;add&#39; },aa:&#39;dddd&#39; }} className="home-link">
                  点击跳转到路由参数search,state使用
              </Link>
          </p>
      );
   }
}
export default Home;
/*
   Test 主页
*/
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
class Test extends Component {
    constructor (props) {
        super(props)
    }
   render() {
       return (
           <p id="test-container">
               <p>search:{this.props.location.search} </p>
               <p>state:{this.props.location.state.mold} </p>
               <p onClick={() =>  this.props.history.goBack()}>返回上一页</p>
               <p onClick={() => this.props.history.push('/message/12')}>message页面</p>
           </p>
       );
   }
}
export default Test;
/*
   Message 主页
*/
import React, { Component } from 'react';
class Message extends Component {
    constructor (props) {
        super(props)
    }
   render() {
       return (
           <h3>Message{this.props.match.params.id}</h3>
       );
   }
}
export default Message;
Salin selepas log masuk

8、效果如下

31.gif

本篇文章到这就结束了(想看更多就到PHP中文网React使用手册栏目中学习),有问题的可以在下方留言提问。

Atas ialah kandungan terperinci React路由如何搭建demo?react搭建路由demo的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan