dva与我们的create-react-app创建的两款脚手架是我们写react项目的两款优秀框架,之前一种使用create-react-app这款脚手架进行开发。然后这个框架美中不足的是redux方面着实令人书写麻烦 然而dva框架就对其进行了封装改良 使其看起来vuex相似度十分高 下面给大家介绍下用这两个框架结合起来开发的步骤吧

  首先利用create-react-app生成一个脚手架 然后下载一个dva和history包

接着把脚手架生成的src全部删掉 用我们自己的项目目录进行开发

  首先 建立一个index.js文件夹 作为我们项目的主入口

 import dva from "dva";
import App from "./App" //注意这种引入方式已经报销 在控制台会报警告
// import createHistory from 'history/createBrowserHistory'; //这种为history路由展示方式
//const createHistory=require("history").createBrowserHistory //这种为hash路由展示方式
const createHistory=require("history").createHashHistory //下面是两种注入方式
const app = dva({
history: createHistory(),
}); //const app=dva(createHistory); app.router(App) app.start('#root');

然后建立一个App.jsx作为我们项目路由的主出口文件

 import React,{Suspense} from 'react'

 import {Router} from "dva/router"

 import RouteView from "./routes/RouteView"
import RouteConfig from "./routes/RouteConfig" //注意这里一定要注入history不然页面展示不出来 而且是结构出来的history
function App({history}){
return <Router history={history}>
<Suspense fallback={<div>loading...</div>}>
<RouteView children={RouteConfig}></RouteView>
</Suspense> </Router>
} export default App

为什么使用这个App.jsx呢?

  ---原因当然是想使用路由表了  为了让其与vue项目相似度更高些哈哈   下面展示下个人封装的两个路由表

RouteView

 import React, { Component } from 'react'

 import {Switch,Redirect,Route} from "dva/router"

 export default class RouteView extends Component {
render() {
return (
<Switch>
{this.props.children.map((item,index)=>{
if(item.redirect){
return <Redirect key={index} from={item.path} to={item.redirect}></Redirect>
}else{
return <Route key={index} path={item.path} render={(props)=>{
return <item.component children={item.children} {...props}></item.component>
}}></Route>
}
})}
</Switch>
)
}
}

RouteConfig

 /*
* @Author: chenqiang
* @Date: 2019-08-16 10:59:42
* @Last Modified by: chenqiang
* @Last Modified time: 2019-08-17 20:19:41
* 路由配置表
*/
import React from "react";
const RouteConfig=[
{
path:"/main",
component:React.lazy(()=>import("@/views/main/index.jsx")),
children:[
{
path:"/main/home",
component:React.lazy(()=>import("@/views/main/home/index.jsx"))
},{
path:"/main",
redirect: "/main/home"
}
]
}, {
path:"/login",
component:React.lazy(()=>import("@/views/login/index.jsx"))
},{
path:"/register",
component:React.lazy(()=>import("@/views/register/index.jsx"))
},{
path:"/",
redirect:"/main"
}
] export default RouteConfig;

然后此时我们就可以放心大胆的yarn start运行我们的项目了

很令人无语的是控制台爆出了这么一个警告  虽然不影响我们的代码执行,但是有强迫症的人来说看见这篇警告总是非常不爽的一件事

于是就各种查阅资料进行取消这个警告

  先说下这个警告的意思吧  说第一种引入的方式已被废除让我们用下面哪种引入方式进行引入  然后是不是很神奇呢 ,我明明没有这样

引入过为什么给我报出来了呢???   答案在下面===>

打开我们的node_modulex  找到我们dva包 打开下面这个文件

然后在里面就会有哪种方式的引入 将其更改掉就好了

美中不足的是每次重新下包就会给你自动改回去~~~

剩下的就可以放心大胆的撸代码了  然后下面在贴一个antd的按需加载

建造一个.babelrc文件  内容如下

 {
"presets": [
"react-app"
],
"plugins": [
[
"import",
{
"libraryName": "antd",
"libraryDirectory": "es",
"style": "css" // `style: true` 会加载 less 文件
}
]
]
}

注意package.json  不能再有babelrc这个字段了  不然会报错

dva与create-react-app的结合使用的更多相关文章

  1. tap news:week5 0.0 create react app

    参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...

  2. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  3. 如何扩展 Create React App 的 Webpack 配置

    如何扩展 Create React App 的 Webpack 配置  原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...

  4. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  5. 在 .NET Core 5 中集成 Create React app

    翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...

  6. Create React App

    Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...

  7. Create React App 安装less 报错

    执行npm run eject 暴露模块 安装 npm i  less less-loader -D 1.打开 react app 的 webpack.config.js const sassRege ...

  8. [React] Use the Fragment Short Syntax in Create React App 2.0

    create-react-app version 2.0 added a lot of new features. One of the new features is upgrading to Ba ...

  9. [React] {svg, css module, sass} support in Create React App 2.0

    create-react-app version 2.0 added a lot of new features. One of the new features is added the svgr  ...

  10. create react app 项目部署在Spring(Tomcat)项目中

    网上看了许多,大多数都是nginx做成静态项目,但是这样局限性太多,与Web项目相比许多服务端想做的验证都很麻烦,于是开始了艰难的探索之路,终于在不经意间试出来了,一把辛酸... 正常的打包就不说了. ...

随机推荐

  1. 在vue项目中正确的引入jquery

    最近学习vue,习惯性的通过<script>标签引入jquery,写完后报错才想起来,这种方式在vue是不适用的. 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jqu ...

  2. Django项目:CRM(客户关系管理系统)--35--27PerfectCRM实现King_admin编辑复选框

    #admin.py # ————————01PerfectCRM基本配置ADMIN———————— from django.contrib import admin # Register your m ...

  3. 通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数

    通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账 ...

  4. Hackerrank--Mixing proteins(Math)

    题目链接 Some scientists are working on protein recombination, and during their research, they have foun ...

  5. JS---案例:高清放大镜

    案例:高清放大镜 分3步 1. 鼠标进入和离开,显示和隐藏遮挡层和大图div 2. 鼠标在小层上移动,鼠标横纵坐标,为可视区域坐标-遮挡层的宽高,鼠标移动的时候,在一个区域内移动,需要判断和定义下移动 ...

  6. 笔记本最小安装centos7 连接WiFi的方法

    1.首先下载iw工具. yum -y install iw 2.获取无线网卡的名称 执行iw dev,假设获得名称为 wlp3s0(示例) 3.激活无线网络接口 执行ip link set wlp3s ...

  7. fiddler替换服务器上文件进行本地调试

    在我们前端开发的日常工作中,发现服务器上某个css/javascript文件有问题,需要修改,那真是家常便饭.通常,我们需要将文件进行修改,然后重新发布再验证,这样就很容易影响到生产环境的稳定性.更普 ...

  8. NOIP模拟赛 17.10.10

    初次见面(firstmeet)[题目背景]雾之湖边,静得可怕.露米娅出神凝望.黑白连衣裙,像极了绽放的墨黑和洁白的莲.身边的雾之湖,倒映着血色天空.酒红的双眸,映照一切.低声浅笑,双臂伸直,她悄无声息 ...

  9. CF 848C

    听说,一个好的oier是题目喂出来的. 题目 给定长度为n的数组, 定义数字X在[l,r]内的值为数字X在[l,r]内最后一次出现位置的下标减去第一次出现位置的下标 给定m次询问, 每次询问有三个整数 ...

  10. Vue.js @click点击无效?

    原因, 那个点击的元素, 没有在 <div id="app"></div>里面