使用create-react-app搭建dva项目(二)

基于create-react-app的项目搭配dva 1 创建项目 create-react-app project 2 删除src目录下的所有文件,除了index.js,安装dva-loading npm install dva-loading --save 3 src目录下新建models文件夹,models下面新建list.js export default { namespace: "list", state:... 阅读详情


前言

上篇文章写到安装dva和history之后修改项目src目录,本篇接着继续叙述剩下的操作。
在这里插入图片描述


一、router文件夹

  • index.tsx
import { Router, Route, Switch } from "dva/router";
import dynamic from "dva/dynamic";
import { ConfigProvider } from "antd";
import "moment/locale/zh-cn";
import zhCN from "antd/es/locale/zh_CN";
import routes from "./routes";

const allRoutes = [...routes];

function RouterComponent({ history, app }) {
  return (
    <ConfigProvider locale={zhCN}>
      <Router history={history}>
        {allRoutes ? (
          <Switch>
            {allRoutes.map((route, index) => {
              const { path, ...dynamics } = route;

              return (
                <Route
                  key={index}
                  path={path}
                  exact
                  component={dynamic({ app, ...dynamics } as any) as any}
                />
              );
            })}
          </Switch>
        ) : null}
      </Router>
    </ConfigProvider>
  );
}

export default RouterComponent;

  • routes.tsx
import { BASE_PATH } from "@/globalConstants";
import { RouteType } from "./index.d";

const App = () => import("@/App");
const A = () => import("pages/A");
const Demo = () => import("pages/Demo");

const routes: RouteType = [
  {
    path: `${BASE_PATH}/app`,
    exact: true,
    models: () => [import("models/app")],
    component: App,
  },
  {
    path: `${BASE_PATH}/A`,
    exact: true,
    models: () => [import("models/a")],
    component: A,
  },
  {
    path: `${BASE_PATH}/Demo`,
    exact: true,
    models: () => [import("models/demo")],
    component: Demo,
  },
];

export default routes;

  • index.d.ts
export interface RouteItem {
  key?: string | number;
  // component?: React.ComponentType<any>;
  component?: any;
  path: string;
  name?: string;
  exact?: boolean;
  strict?: boolean;
  routes?: RouteItem[];
  redirect?: string;
  authority?: string[];
  models: any;
}

export type RouteType = RouteItem[];

二、pages文件夹

  • A.tsx
import React from "react";

const A: React.FC = () => {
  return <>This is pageA</>;
};

export default A;

三、models文件夹

  • a.ts
import { getUserInfo } from "services/a";
import { IAState, IAModel } from "interfaces/a";

const initState: IAState = {
  a: "a",
};

const aModel: IAModel = {
  namespace: "a",
  state: initState,
  subscriptions: {},
  effects: {
    *getUserInfo({ payload }, { call, put }) {
      const res = yield call(getUserInfo, payload);
      const {
        header: { code },
        payload: data = [],
      } = res;

      if (code === 200) {
        yield put({
          type: "update",
          payload: { userInfo: data },
        });
      }
    },
  },
  reducers: {
    update(state = initState, { payload }) {
      return {
        ...state,
        ...payload,
      };
    },
  },
};

export default aModel;

四、interfaces文件夹

  • a.d.ts
import { Reducer } from "redux";
import { Model, Effect } from "@/interfaces";

export interface IAState {
  a: string;
}

export interface IAModel extends Model {
  namespace: string;
  state: IAState;
  subscriptions?: any;
  effects: {
    getUserInfo: Effect;
  };
  reducers: {
    update: Reducer<IAState>;
  };
  onEffectsError?: (err: Error, extension: any) => void;
}

  • index.d.ts
import { ReducersMapObject, Reducer } from "redux";
import { IGlobalState } from "interfaces/global.d.ts";
import { IAppState } from "interfaces/app.d.ts";
import { IDemoState } from "interfaces/demo.d.ts";

export interface ReducerEnhancer {
  (reducer: Reducer<any>): void;
}

export interface Model {
  namespace: string;
  state?: any;
  subscriptions?: any;
  reducers?: ReducersMapObject | ReducersMapObjectWithEnhancer;
  effects?: EffectsMapObject;
  onEffectsError?: (err: Error, extension: any) => void;
}

export type Effect<P = any> = (
  action: ActionType<P>,
  effects: EffectsCommandMap
) => void;

export interface IConnectState {
  global: IGlobalState;
  app: IAppState;
  demo: IDemoState;
}


其他

剩下的utils和services文件夹没有放出来,因为services里的request方法可自己去写,该怎么去请求还有判断token合法与否等。

React最佳实践系列 —— 循序渐进理解 Dva中的model概念 Dva最佳实践 -- 循序渐进理解 dva中的model概念一. 序二. 在create-react-app中使用redux1. 开始2. 安装redux三.异步action四. Dva中的model五. subscriptions属性 作者: DocWhite白先生 一. 序 在dva框架中model的出现,帮助开发者不比在新建项目的时候每次都要一次安装配置和React-Router, R... 阅读详情

相关推荐

React+umi+dva 项⽬实战-lesson6

React+umi+dva 项⽬实战-lesson6

python183360的博客 1345

dva( 轻量级的应用框架 )

dva

weixin_60968779的博客 4670

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

使用create-react-app搭建dva项目(一)

使用create-react-app搭建dva项目

Nancyeah的博客 548

从RJPG到温度地图:基于大疆TSDK的热红外数据精准处理与Pix4D拼接实战

本文详细解析了如何利用大疆TSDK将无人机拍摄的热红外RJPG图像精准转换为带有地理坐标的温度TIFF文件,并完成Pix4D拼接生成正射温度地图的全流程。文章重点阐述了辐射定标的原理、TSDK关键参数(测量距离、湿度、发射率、反射温度)的设置与微调方法,以及Pix4D处理中的常见报错解决方案,旨在帮助用户实现从原始数据到可分析温度地图的精准处理。

docker7nomad的博客 464

WD西部数据2TB,2.5寸移动硬盘,因为磁头坏了,长时间通电导致划片划伤,维修过程通过反复更换磁头

WD西部数据2TB,2.5寸移动硬盘,因为磁头坏了,长时间通电导致划片划伤,维修过程通过反复更换磁头,才能利用专业设备,里面找到,镜像,把内容数据恢复出来。 1.说一下经历,借用的别人移动硬盘,去帮别人维修,拷数据出来,别人的文件,数据比较多,且复杂,而且是在PE系统,接口什么的是2.0,没有很好的思考就全选复制拷贝了; 2,拷贝的过程,极其慢,文件多,且文件有损坏,移动硬盘一直处于通电的状态,大概从下午,两点多开始100多G的数据,一直卡住,到,晚上7 。8点拷完还是没拷完。打开的时候就已经,就一直

weixin_43766920的博客 4301

基于create-react-app官方脚手架搭建dva模式的项目(一)

思索良久,决定还是记录下心得体会:一个基于create-react-app官方脚手架,搭建起来的dva开发模式的react项目。 当然现今的前端市场如此强大,你可以在网络上找到你想要的任何脚手架,并且很多可以开箱即用,不可否认它们很优秀,开发它们的人或团队更值得我们竖起大拇指,为他们点赞!比较适合国人还是阿里系的一套react开发脚手架,dva-cli,antd,Umi等,当然gitHub上也有...

小记心得 1万+

GhidraMCP:AI驱动的逆向工程革命——让LLM自主操作Ghidra进行自动化分析

(Ghidra Machine Control Protocol)应运而生,它通过将LLM与Ghidra(美国NSA开源逆向工具)结合,实现了AI驱动的自动化逆向工程流程。逆向工程是软件安全、漏洞分析和代码审计的核心环节,但传统方法依赖人工分析,耗时且易出错。未来,随着LLM技术的演进和逆向工程工具的优化,GhidraMCP有望成为安全研究人员和开发者的核心工具,推动逆向工程进入“AI辅助时代”。GhidraMCP通过LLM与Ghidra的深度整合,重新定义了逆向工程的自动化边界。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 2115

dva与create-react-app的结合使用

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

dengweihuan4949的博客 452

SOME/IP协议详解「4.1·经典AutoSAR下的SOME/IP架构」

SOME/IP协议详解「4.1·经典AutoSAR下的SOME/IP架构」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「4.1·经典AutoSAR下的SOME/IP架构」1 CP的SOME/IP架构概览2 业务报文通信流3 服务发现通信和控制流 1 CP的SOME/IP架构概览 2 业务报文通信流 3 服务发现通信和控制流 点击返回雪云飞星的SOME/IP协议详解「总目录」 ...

雪云飞星的博客 6067

27、振动信号实时并行处理与风力发电机模型鲁棒控制设计

本文探讨了振动信号实时并行处理与风力发电机模型鲁棒控制设计两大核心技术。在振动信号处理方面,提出基于FPGA、RT和PC三级架构的并行采集与处理系统,实现高效、实时的振动分析,适用于电机状态监测与预测性维护。在风力发电控制方面,研究风力农场布局优化(WFLO)问题,比较九种多目标元启发式算法性能,并提出基于扰动观察法的最大功率点跟踪(MPPT)控制策略,提升发电效率与系统鲁棒性。研究成果为工业设备智能监控与可再生能源优化提供了有效技术路径。

sunny的博客 72

基于create-react-app官方脚手架搭建dva模式的项目(二)

接上一篇:https://blog.csdn.net/xw505501936/article/details/80621740 先来看下现有项目: 点击 去BBB页面 如下: 点击 去CCC页面 如下: 好,以上是现有项目情况。 下面我们让页面稍微美观一些,引入UI库,这里依然选用阿里系的antd(具体不做介绍,有兴趣的同学可官网查阅,此UI库也有针对angular的版本,也...

小记心得 4740

OceanBase数据库:从入门到精通全栈教程目录(含架构解析、性能调优与实战案例)

《OceanBase数据库专栏》全面解析蚂蚁集团自主研发的分布式关系型数据库,涵盖从基础到高级的完整知识体系。专栏分为入门篇、原理篇、使用篇等七大模块,包含35+篇深度文章,详细讲解OceanBase的高可用架构、Paxos协议、LSM树存储引擎等核心技术。特别提供MySQL/Oracle迁移指南、金融/电商场景实践案例,以及性能调优、运维监控等实战内容。适合开发者、DBA及架构师快速掌握OceanBase的核心特性和行业应用,助力企业实现数据库分布式转型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 981

使用create-react-app或者antd创建一个React项目

转载请注明出处:王亟亟的大牛之路 距离上一次提及React的内容差不多也快1年多了,然后这一年里平胸而论觉得进步不多,然后最近因为业务需要然后都在做一些前端的工作。 然后以前都是从npm init一路自己撸到配置package.json到写scripts那些,现在脚手架一行撸穿,还是感叹懒人的世界6666 老规矩开篇前先案例:https://github.com/ddwhan0123/U...

王亟亟的博客 4万+

【定位模块项目实战】正态分布变换(NDT)定位及建图(依赖高精度点云地图和三维激光雷达的定位方案)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、正态分布变换(NDT)定位解决的主要问题二、正态分布变换(NDT)定位的核心思想三、NDT算法流程1.多元正态分布概念2.网格化并计算正态分布参数3.变换参数和最大似然四、使用C++实现NDT配准参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对依赖高精度地图和激光雷达的定位技术–正态分布变换(NDT)定位做个简单的介绍,具体

qq_35635374的博客 4411

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

create-react-app结合dva.js1-搭建项目整合dva.js

create-react-app结合dva使用 dva: dva 首先是一个基于redux和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。 dva数据流向图 创建项目 弹出配置npm run eject 导入dva.js 安装dva cnpm install dva --save 在src目录下新建views文件夹, 用来存放页面组件 在views文件夹下, 新建一个Page1.jsx文

wx1035589113的博客 877

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

react如何使用dva

Dva” 是一个基于 Redux 和 Redux-saga 的状态管理框架,通常用于 React 应用程序。它帮助你更轻松地管理应用程序的状态、副作用和数据流。

秋来九月八 3172

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

改造create-react-app 引入dva和antd

改造create-react-app 引入dva和antd 脚手架搭建项目 先用脚手架把项目搭建 npx create-react-app my-react-a 项目结构 试一下跑起来项目 yarn start 暴露webpack 配置 npm run eject ​ 这边脚手架中的配置就完毕了 将项目改造为dva 引入dva库 npm install dva -D 改造项目 src目录下新建models,routes,services,utils文件夹 在routes中

weixin_42369612的博客 524

新手搭建第一个react脚手架项目 --基于create-react-app

1.安装create-react-app npm install create-app -g (-g 全局安装) 2.为项目命名 create-react-app demo-project (demo-project为项目名称) 3.一个可运行的项目就安装好了,可以运行了(默认端口3000) npm run start 4.如果要暴露所有配置 使用npm run eject,项目...

qq_32094783的博客 675

create-react-app项目所遇问题总结之引入dva

建议引入dva前,大家可以参照官方dva快速上手先用dva-cli脚手架先创建一个react+dva项目,先看看里面的目录结构,以及使用规则配置方式。 言归正传, 那么在我们用create-react-app搭建的项目中如何引用dva呢? 1. 引入依赖 yarn add dva -S 2. 改造目录和配置 嗯,就这样。 3. 如何在项目中使用ES7的修饰器@ 平时开发react项目中,引入ES7的修饰器可以帮助我们优化很多东西,比如说dva的connect连接函数,比如说click方法中的this绑定

阑珊伊人 511

创建react、umi项目时的坑

主要是记录平时自己练习时遇到的问题~~ 按照学习文档练习react、dva、umi项目创建并进行相关开发练习 一、使用create-react-app创建react项目 可以使用以下三种命令创建一个react项目,可以参考: https://github.com/facebook/create-react-app 1.npx create-react-app my-app //my-pp是一个项...

HZ_xhs的博客 8810

React.js + Dva初探

React.js React官网:https://react.docschina.org/ ES6学习:http://es6.ruanyifeng.com/ Ant Design蚂蚁家框架: https//ant.design/index-cn Redux状态管理器: https://www.redux.org.cn Dva脚手架: https://github.com/dvajs/dva 开...

托比大王 684

create-react-app / UmiJS创建React项目

react项目的几种创建方法:creat-react-app、umi、pro-cli

情非得已小猿猿 3293

react的项目搭建

关于react项目搭建关于react项目搭建项目搭建的基本前提react项目react+dva+antd项目 关于react项目搭建 项目搭建的基本前提 环境: nodejs :安装的话可以百度 必须安装; 镜像 :npm install -g cnpm --registry=https://registry.npm.taobao.org 我用的淘宝镜像; react项目 根据以上的环境创建r...

moon_comb的博客 361
上一篇: Chrome 106新版本拖拽元素导致页面渲染空白问题
下一篇: 使用create-react-app搭建dva项目(一)
Nancyeah
博客等级 码龄9年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值