React路由配置

作者: 朝曦 | 来源:发表于2018-11-19 13:56 被阅读47次

React路由简单配置

//入口文件index.js
import React from 'react';
import ReactDom from 'react-dom';
import { Router, Route, BrowserRouter,Switch } from 'react-router-dom';
import createBrowserHistory from "history/createBrowserHistory";
import routeTest from './pages/routeTest';
import Home from './Home';

const history = createBrowserHistory();
ReactDom.render(
    <Router history={history}>
        <Switch>
            <Route path='/' exact component={Home} />
            <Route path='/hooksDemo' exact component={routeTest} />
        </Switch>
    </Router >,
    document.getElementById('app')
);
  • Router的history是必需的props
  • Router中只能有一个子元素
  • Switch:只渲染第一个与当前地址匹配的<Route>
  • Route的props path为路径,component为路径对应的页面,exact精确匹配
    这是一个简单的路由配置,可以实现页面的简单跳转,但是如果页面比较多,可以把页面组件引入和Route组件提取出来,以保证入口页面良好的可阅读性。

多页面路由配置

//将页面引入和Route组件提取到./App.js
import React from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import PropTypes from 'prop-types';
import routeTest from './pages/routeTest';
import Home from './Home';

const App = ({ history }) => (
    <Router history={history}>
        <Switch> 
            <Route exact path='/' exact component={Home} />
            <Route exact path='/hooksDemo' exact component={routeTest} />
        </Switch>
    </Router>
);
App.propTypes = {
    history: PropTypes.shape({}).isRequired
};
export default App;
// ./index.js
import React from 'react';
import ReactDom from 'react-dom';
import { Router, Route, BrowserRouter,Switch } from 'react-router-dom';
import createBrowserHistory from "history/createBrowserHistory";
import App from './App';

const history = createBrowserHistory();
ReactDom.render(
    <App history={history} />,
    document.getElementById('app'),
);
  • 这样一来,当项目比较大,页面很多的时候,页面引入和Route定义的部分都被拆分到./App.js中,./index.js只需引入./App.js即可。

使用react-redux的路由配置

使用react-redux时,需要store进行状态管理,使用Provider组件注入store

  • ./store,js创建storeTree
./store.js
import { createStore, combineReducers, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import routeTestReducer from 'pages/routeTest/indexRedux';

const storeTree = combineReducers({
    routeTestReducer
});
const store = createStore(storeTree, applyMiddleware(thunk));
export default store;
  • ./index.js使用Provider组件传递store
./index.js
import React from 'react';
import ReactDom from 'react-dom';
import { Router, Route, BrowserRouter,Switch } from 'react-router-dom';
import createBrowserHistory from "history/createBrowserHistory";
import { Provider } from 'react-redux';
import store from './store';
import App from './App';

const history = createBrowserHistory();
ReactDom.render(
    <Provider store={store}>
        <App history={history} />
    </Provider>,
    document.getElementById('app'),
);

Demo源码地址:https://github.com/wuhuaranran/react-demo-

相关文章

  • react 路由、移动端适配以及less配置

    一. 路由设置 首先 react 配置路由需要引入 react-router-dom 依赖: 引入依赖之后,配置路...

  • react16 路由配置

    react16 路由配置 环境:"react": "^16.13.1","react-dom": "^16.13....

  • React 中好用的库

    React-router: 路由库 react-router-config: 统一管理配置我们的路由

  • react路由

    最近在学习react,研究了react的路由配置。说到react路由我们首先看一下react-router和rea...

  • react-router4@笔记

    新项目使用react-router@4来进行路由跳转,使用非static的配置方式该用jsx。之前配置动态生成路由...

  • react路由配置

    一. 安装react-router-dom 使用命令行 npm i react-router-dom --save...

  • react 路由配置

    用了react 也有段时间了,今天来给大家分享下 import { HashRouter, Route, Swit...

  • React路由配置

    React路由简单配置 Router的history是必需的props Router中只能有一个子元素 Switc...

  • React路由配置

    目前前端项目都是SPA项目,而单页应用就少不了路由配置,因为单页应用的页面不会刷新页面,而是根据路由的切换来更换页...

  • react路由配置

    1. 安装 npm i react-router-dom --save 2.在index.js文件中进行配置 3....

网友评论

    本文标题:React路由配置

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