webpack 配置react脚手架(四):路由配置
1. 由于 react-router 是集成了 react-router-dom 和 react-router-native的一起的,所以这里要使用的是 react-router-dom,
2. 安装 npm i react-router -S 、 npm i react-router-dom -S
路由配置router.js:
import React from 'react'
import {
Route
} from 'react-router-dom' import TopicList from '../views/topic-list/index'
import TopicDetail from '../views/topic-detail/index' export default () => [
//react 16 可以直接返回一个数组 不需要在外层加div
/* 这里路由为 ‘/’ 的要加上 exact。因为/路由最大,覆盖了/detail 等路由,不加设置的话,
所有的页面都会同时加载 / 的路由内容,所以加上 exact,规定只能严格等于该路由。
*/
<Route path="/" component={TopicList} exact/>,
<Route path="/detail" component={TopicDetail} key="detail" />,
]
对于最外层的入口文件 app.js
import React from 'react'
import ReactDOM from 'react-dom'
import { BrowserRouter } from 'react-router-dom' //浏览器路由
import { AppContainer } from 'react-hot-loader' // eslint-disable-line
import App from './views/App'//组件 const root = document.getElementById('root')
const render = (Component) => {
ReactDOM.hydrate(
<AppContainer>
<BrowserRouter>
<Component />
</BrowserRouter>
</AppContainer>,
root,
)
} render(createApp(App)) if (module.hot) {
module.hot.accept('./views/App', () => {
const NextApp = require('./views/App').default // eslint-disable-line
render(createApp(NextApp))
})
}
使用 Redirect组件,可以在用户访问某个路由时,跳转到其他路由:
import React from 'react'
import {
Route,
Redirect,
} from 'react-router-dom' import TopicList from '../views/topic-list/index'
import TopicDetail from '../views/topic-detail/index' export default () => [
<Route path="/" render={()=>{ <Redirect to ="/list"/>}} key="index" exact/>,
<Route path="/list" component={TopicList} key="list"/>,
<Route path="/detail" component={TopicDetail} key="detail"/>,
]
webpack 配置react脚手架(四):路由配置的更多相关文章
- webpack 配置react脚手架(二):热更新
下面继续配置 webpack dev server hot module replacement: 首先配置dev-server 安装 npm i webpack-dev-ser ...
- webpack 配置react脚手架(六):api
1 访问网址 https://cnodejs.org/api 可以调取api 2.//该body-parser 可以将请求的body数据,转变成 json 格式数据://express-session ...
- react中的路由配置踩坑记
react 路由配置中,如果根路由(/)匹配一个组件,另一个路由(/list)在进行匹配的时候也会匹配到根路由(/),即在 /list 页面展示的时候 / 页面总是展示在上方. 此时如果想进行严格匹配 ...
- react ant design路由配置
最初的时候,只使用了antd中的menu,header和footer都是自己写的组件,在写路由时,总是报如下错误: 相关的路由配置如下: 在网上查的说是组件未暴露出去或者是return 这一行必须有个 ...
- react 脚手架 及路由和 redux
前提是我们需要下载 nodejs 使用 npm 下载 react 的脚手架,react-router-dom,redux 全局下载 react 的脚手架:npm i create-react-app ...
- webpack 配置react脚手架(三):eslint 及优化
首先谨记 eslint的官网: http://eslint.cn/ 1 安装eslint npm i eslint -D 2.在根目录下新建文件 .eslintrc { "extends ...
- webpack 配置react脚手架
1 react 基本js文件: import React from 'react'; import ReactDOM from 'react-dom'; import App from './App. ...
- webpack 配置react脚手架(五):mobx
1. 配置项.使用mobx,因为语法时es6-next,所以先配置 .babelrc 文件 { "presets": [ ["es2015", { " ...
- react脚手架搭建及配置
npm install -g create-react-app 装完之后,生成一个新的项目,可以使用下面的命令: create-react-app my-app cd my-app/yarn star ...
随机推荐
- vue-cli3 + ts 定义全局方法
一.定义全局方法不生效 虽然在main.ts当中定义了全局方法,但是在使用的时候根本找不到,也是无语了. 二.解决方法 我在网上找了很多方法,其中很多大神都是这样做的: 但是,我这样写了还是不生效 ...
- Django orm练习
ORM练习题 models生成 from django.db import models # Create your models here. # 书籍管理 class Book(models.Mod ...
- 漏洞复现之Redis-rce
通过主从复制 GetShell Redis主从复制 Redis是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库.但如果当把数据存储在单个Redis的实例中,当读写体量 ...
- [转帖]libev与libuv的区别
libev与libuv的区别 https://www.cnblogs.com/charlesblc/p/6341280.html 参考: http://blog.csdn.net/w616589292 ...
- (一)PlantUML 语法之时序图
文章目录 前言 `-> -->` 信息传递 声明参与者的几个关键字 `as` 重命名参与者 `#` 添加颜色 `order` 定义参与者顺序 `""` 参与者名字 给自 ...
- 虚拟机VMware中安装Ubuntu18.04
准备工作 Ubuntu 获取地址: 官网 清华镜像站 VMware 获取地址链接 安装过程 Vmware的安装过程此处不在赘述,不清楚如何安装的请自行百度,参见VMware14安装教程 然后就是Vmw ...
- C++动态内存常见面试题解析
malloc/free和new/delete傻傻分不清?动态内存管理的面试题难道你了?来看这篇文章,包你全会. 1.malloc/free和new/delete的区别 (1)mall ...
- go http简单的表单处理
//表单处理 package main import ( "net/http" "io" "fmt" &qu ...
- windows 下搭建go开发环境
下载golang安装包: 步骤一: 先打开环境变量配置的界面 步骤二;配置我们的环境变量 对上图的一个说明: 1).path这个变量不需要再创建,因为系统本就有,在后面添加即可. 2).增加Go的bi ...
- python3 内置方法 字符串转换为字典
内置方法:eval()将字符串转换为字典代码: str = '''{'backend':'www.oldboy.org', 'record':{ 'server':'122.111.2.23', 'w ...