iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >react dva实现的代码
  • 467
分享到

react dva实现的代码

2024-04-02 19:04:59 467人浏览 独家记忆
摘要

目录dva使用dva实现dva支持异步router的实现实现:dva dva是一个基于redux和redux-saga的数据流方案,然后为了简化开发体验,dva额外内置了React-

dva

dva是一个基于redux和redux-saga的数据流方案,然后为了简化开发体验,dva额外内置了React-router,fetch,可以激烈为一个轻量级的应用框架

在这里插入图片描述

使用dva

在这里插入图片描述

定义一个模型,有点像redux-toolkit。
使用connect连接

在这里插入图片描述
在这里插入图片描述

像redux的connect一样连接。

在这里插入图片描述

启动。
然后如何派发action。

在这里插入图片描述

通过对应的指令找到对印的reducer,派发。

在这里插入图片描述

dva的基本操作就是这样,使用起来比较轻便。

实现dva

思路:封装一个函数,创建store,通过model收集reducer和state,改变reducer中的方法名字。

在这里插入图片描述

首先是model。因为有多个model,所以我们要收集起来。

在这里插入图片描述

先通过namesapce改变rducer中的方法名字。

在这里插入图片描述

再将其保存起来。

在这里插入图片描述
在这里插入图片描述

然后通过Provider就可以注入进去。

在这里插入图片描述

改造model的reducer,返回redux接受的reducer。此时model的state是不会变的,他只是初始的state,组件真正接受的是redux中的state。
这个getReducer只会调用一次,用来返回真正的reducer。

在这里插入图片描述

初步实现完毕。

支持异步

dva是集成redux-saga的,所以用法也类似。

在这里插入图片描述

在创建model的时候可以通过effects创建saga中间件。然后派发对应的action

在这里插入图片描述
在这里插入图片描述

实现

思路:处理每个model的effects,转会为对应的saga函数,采用takeEvery监听每个属性名(如asyncADD,转化为takeEvery(‘asyncADD', ()=>{})等等),然后通过redux-saga提供的createSagaMiddleware创建一个中间件,利用run方法执行各个model中的effects转化后的saga函数。
代码:

在这里插入图片描述

通过getSagas转化每个model的effects并且存在一个数组里面,然后通过forEach一个个run起来。
看如何转化

在这里插入图片描述

可以看到,每个model的effects会在getSaga被转化为function*(){},然后遍历单个model的effects,对每个属性都做比如*asyncADD(){}处理,如图通过getWatcher返回个saga函数,通过fork开启一个子进程,不会干扰主进程的运行。

在这里插入图片描述

而每个getWatcher返回的就是saga函数(generator函数)他会通过takeEvery监听当前的属性(key)并且执行后面那个effects。这里需要改造一下redux-saga的Put方法,使他单独做一些prefixType的逻辑。
这样就基本完成,每个model的effects都会被处理城saga函数去run,而且effects的每个方法都转化为了key,通过takeEvery去监听。这里还需要对effect的每个方法名加上前缀

在这里插入图片描述

这样就大功搞成了。

在这里插入图片描述

可以正常运行。

router的实现

在这里插入图片描述
在这里插入图片描述

使用没什么区别
dva是继承了connected-react-router的

在这里插入图片描述
在这里插入图片描述

所以用法跟其差不多,注意,异步的逻辑只能写在effects,reducer是同步的,不能继续派发的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于connectd-react-router

在这里插入图片描述

还记得connectd-react-router怎么使用吗,第一步,创建router对象。

在这里插入图片描述

第二步,使用中间件。

在这里插入图片描述

传入api给app._router作为参数。这样就完成了。

在这里插入图片描述

当他派发push的时候会被路由中间件拦截处理,push到另一个页面去。

到此这篇关于react dva实现的文章就介绍到这了,更多相关react dva实现内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: react dva实现的代码

本文链接: https://www.lsjlt.com/news/156703.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • react dva实现的代码
    目录dva使用dva实现dva支持异步router的实现实现:dva dva是一个基于redux和redux-saga的数据流方案,然后为了简化开发体验,dva额外内置了react-...
    99+
    2024-04-02
  • react dva实现的代码怎么编写
    今天就跟大家聊聊有关react dva实现的代码怎么编写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。dvadva是一个基于redux和redux-saga的数据流方案,然后为了简化...
    99+
    2023-06-25
  • react实现Radio组件的示例代码
    本文旨在用最清楚的结构去实现一些组件的基本功能。希望和大家一起学习,共同进步 效果展示: 测试组件: class Test extends Component { cons...
    99+
    2024-04-02
  • react中antd和dva的概念是什么
    今天小编给大家分享一下react中antd和dva的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2024-04-02
  • React实现登录表单的示例代码
    作为一个Vue用户,是时候扩展一下React了,从引入antd、配置less、router,终于实现了一个简单的登录表单。 代码如下: import React from 'r...
    99+
    2024-04-02
  • React代码分割的实现方法介绍
    目录代码分割React.lazy&Suspense异常捕获边界(Error boundaries)基于路由的代码分割命名导出(Named Exports)代码分割 打包是个很...
    99+
    2022-12-03
    React代码分割 React代码分割实现方式
  • React实现前端选区的示例代码
    目录什么是选区如何建立选区浏览器绘制选区方式React计算选区范围什么是选区 前端选区非常常见,通过鼠标的点击和移动来创建一个选中页面,在多个元素需要被选中的情况下,一个个点击显的非...
    99+
    2023-05-19
    React 前端选区 React 选区
  • 30行代码实现React双向绑定hook的示例代码
    目录使用Proxy代理数据使用useRef创建同一份数据引用添加更新handler去除多次Proxy添加缓存完善代码总结Sandbox 示例Vue和MobX中的数据可响应给我们留下了...
    99+
    2024-04-02
  • React中代码分割的4种实现方式
    目录前言import()React.lazyimport() + React LoadableUmiJS 按需加载总结前言 在 React 应用中,我们通常的做法是直接将某个模块导入...
    99+
    2024-04-02
  • React实现核心Diff算法的示例代码
    目录Diff算法的设计思路Demo介绍Diff算法实现遍历前的准备工作遍历after遍历后的收尾工作总结Diff算法的设计思路 试想,Diff算法需要考虑多少种情况呢?大体分三种,分...
    99+
    2024-04-02
  • React使用highlight.jsClipboard.js实现代码高亮复制
    目录正文安装 highlight.js 和 Clipboard.js配置 highlight.js 支持的语言创建 CodeBlock 组件使用 CodeBlock 组件效果展示正文...
    99+
    2023-05-17
    React代码高亮复制 React highlight.js Clipboard.js
  • 一百多行代码实现react拖拽hooks
    前言 源码总共也就一百多行,看完这个大致可以理解一些成熟的react拖拽库的实现思路,比如react-dnd,然后你上手这些库的时候就非常快了。 使用hooks实现的大致效果动图如...
    99+
    2024-04-02
  • react实现组件状态缓存的示例代码
    目录前言一、安装第三方库二、配置操作总结前言 在移动端中,用户访问了一个列表页,上拉浏览列表页的过程中,随着滚动高度逐渐增加,数据也将采用触底分页加载的形式逐步增加,列表页浏览到某个...
    99+
    2023-02-24
    react 组件状态缓存 react 组件缓存
  • react+zarm实现底部导航栏的示例代码
    目录需要实现的效果实现过程1.使用 prop-types 库进行类型检查2.使用 useNavigate3.编写标签栏组件4.使用标签栏组件5.添加对应的页面路由6.效果参考资料需要...
    99+
    2024-04-02
  • React + Threejs + Swiper 实现全景图效果的完整代码
      咱先看看全景图实现效果:展示地址   截图:   体验了一下是不是感觉周围环境转了一圈,感觉世界是圆的?...
    99+
    2024-04-02
  • react实现浏览器自动刷新的示例代码
    目录什么是前端路由?如何实现前端路由?hash 实现history 实现 原生JS版前端路由实现基于 hash 实现基于 history 实现React 版前端路由实现基于...
    99+
    2024-04-02
  • React Native详解和代码实例
    目录 一、React Native 的主要特点二、React Native 的工作原理三、React Native 的优缺点四、React Native 代码示例 React Native...
    99+
    2023-10-23
    react native react.js javascript
  • react写法实例代码分析
    这篇文章主要介绍“react写法实例代码分析”,在日常操作中,相信很多人在react写法实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react写法实例代码分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-05
  • React Native JSI实现RN与原生通信的示例代码
    目录什么是JSI JSI有什么不同 在iOS中使用JSI iOS端配置 RN端配置 js调用带参数的原生方法 原生调用JS 原生调用带参数的JS方法 在原生端调用js的函数参数 总结...
    99+
    2024-04-02
  • react+axios实现github搜索用户功能(示例代码)
    加载 请求成功 请求失败 在文件路径点击cmd 回车 首先把服务器打开 npm start app.js import React, { Component } ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作