首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

react项目架构之路初探

技术的选型 项目主要使用了redux,react-redux,redux-saga,seamless-immutable,reduxsauce。...redux 三大原则:单一数据源,只读的state,使用纯函数来修改 redux是一款 状态管理库,并且提供了react-redux来与react紧密结合,核心部分为Store,Action,Reducer...可以参考我的这篇文章 react-redux 提供一个Provider组件 负责吧外层的数据 传递给所有的子组件 connect方法(高阶组件) 负责将props和dispatch的方法 传递给子组件...可以用这两点来提现:持久化的数据结构和结构共享 详情可以参考这篇文章 在此不做赘述 npm地址以及api介绍:https://www.npmjs.com/package/seamless-immutable.../saga' // 引入saga中相关组件 import createSagaMiddleware from 'redux-saga' // 引入react-redux相关组件 使redux和react

2.5K10

React组件设计实践总结05 - 状态管理

例如异步数据获取: image.png 抑或者实现 Redux 的核心功能: 总结一下使用 hooks 作为状态管理器的优点: 极简。...其他类似的方案 unstated unstated-next 的前身,使用 setState API react-hooks-global-state 扩展 React Context API — A...(其实可以当做是 Vuex 的优点),来提升 Redux 的开发体验: 使用 Ducks 风格组织代码.聚合分散的 reducer,saga,actions… 更简化的 API 提供了简单易用的模块化...如使用 saga 或 redux-promise 简化了不可变数据的操作方式。 如使用 immer 简化 reducer。...单页应用的数据流方案探索 复杂单页应用的数据层设计 State of React State Management for 2019 从时间旅行的乌托邦,看状态管理的设计误区 Please enable

2.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    redux-saga

    我们知道React等单页应用在开发时,页面变化依赖于state 随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state(状态)。...这些 state 可能包括服务器响应、缓存数据、本地生成尚未持久化到服务器的数据,也包括 UI 状态,如激活的路由,被选中的标签,是否显示加载动效或者分页器等等。...一些库如 React 试图在视图层禁止异步和直接操作 DOM 来解决这个问题。美中不足的是,React 依旧把处理 state 中数据的问题留给了你。Redux 就是为了帮你解决这个问题。...因此我们首先得学习Redux,中文官网地址:http://cn.redux.js.org/ 此时我们可以很好的在大型项目中管理我们的state了,但如果我们要异步获取数据、访问浏览器缓存等操作,就需要用到...Redux-Saga 官网地址(英文):https://redux-saga.js.org/ 中文文档地址:https://redux-saga-in-chinese.js.org/ 我简单进行入门了一下

    55010

    【Web技术】639- Web前端单元测试到底要怎么写?

    项目用到的技术框架 该项目采用 react 技术栈,用到的主要框架包括:react、 redux、 react-redux、 redux-actions、 reselect、 redux-saga、 seamless-immutable...设计模式与结构分析 在这个场景设计开发中,我们严格遵守 redux 单向数据流 与 react-redux 的最佳实践,并采用 redux-saga 来处理业务流, reselect 来处理状态缓存,通过...sagas 这里我用了 redux-saga 处理业务流,这里具体也就是异步调用 api 请求数据,处理成功结果和错误结果等。...这里我们来看看获取表格数据的业务代码: import { all, takeLatest, put, select, call } from 'redux-saga/effects'; import *...put, select } from 'redux-saga/effects'; // ... /* 测试获取数据 */ test('request data, check success and

    3.1K30

    2021高频前端面试题汇总之React篇

    2021高频前端面试题汇总之React篇 React视频教程系列 React 实战:CNode视频教程 完整教程目录:点击查看 React经典教程-从入门到精通 完整教程目录:点击查看 最新最全前端毕设项目...(2)propType 和 getDefaultProps React.createClass:通过proTypes对象和getDefaultProps()方法来设置和获取props....(1)使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga...缺陷: 额外的学习成本: redux-saga不仅在使⽤难以理解的 generator function,⽽且有数⼗个API,学习成本远超redux-thunk,最重要的是你的额外学习成本是只服务于这个库的...Redux 状态管理器和变量挂载到 window 中有什么区别 两者都是存储数据以供后期使用。

    2K00

    React saga_react获取子组件ref

    前言 React的作用View层次的前端框架,自然少不了很多中间件(Redux Middleware)做数据处理, 而redux-saga就是其中之一,目前这个中间件在网上的资料还是比较少,估计应用的不是很广泛...redux-saga简介 Redux-saga是Redux的一个中间件,主要集中处理react架构中的异步处理工作,被定义为generator(ES6)的形式,采用监听的形式进行工作。...4.redux-saga实现一个登陆和列表样例 接着我们来实现一个redux-saga样例,存在一个登陆页,登陆成功后,显示列表页,并且,在列表页,可 以点击登出,返回到登陆页。...(1)LoginPanel(登陆页) 登陆页的功能包括 输入时时保存用户名 输入时时保存密码 点击sign in 请求判断是否登陆成功 I)输入时时保存用户名和密码 用户名输入框和密码框onchange...登出功能,点击可以返回登陆页面 I)获取列表信息 import {delay} from 'redux-saga'; function * getList(){ try { yield delay

    4.5K30

    使用hooks重新定义antd pro想象力(一)

    它的核心数据处理方案dva聚合了react-redux, redux-saga,极大的降低了redux使用的复杂度。因此使用antd pro无疑是一个非常好的方案。 但是!...4.掌握react hooks基础知识5.掌握简单的Typescript使用 本系列文章要有最好的阅读效果,建议下载官方的demo,并手动练习更改。...3 dva中,新的hooks API,useDispatch与useSelector useDispatch与useSelector是react-redux提供的api。...的使用也非常简单,就是从全局维护的Store状态中,获取当前组件需要的数据。...Dashboard的三个页面,分析页,监控页,工作台,都非常简单。以分析页为例,所有的数据都来源于一个接口,只需要在页面组件渲染时请求一次即可。

    4.2K20

    前端react面试题(必备)2

    TypeScript写React应用吗?...(1)使用react-thunk中间件redux-thunk优点:体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码使⽤简单: redux-thunk没有引⼊像redux-saga或者...实现,代码异常/请求失败 都可以直接通过 try/catch 语法直接捕获处理功能强⼤: redux-saga提供了⼤量的Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使...额外的学习成本: redux-saga不仅在使⽤难以理解的 generator function,⽽且有数⼗个API,学习成本远超redux-thunk,最重要的是你的额外学习成本是只服务于这个库的,与...Props 也不仅仅是数据--回调函数也可以通过 props 传递。React中constructor和getInitialState的区别?两者都是用来初始化state的。

    2.3K20

    2022社招React面试题 附答案

    2022社招React面试题 附答案 React视频讲解 点击学习 全部视频:点击学习 1. React的事件和普通的HTML事件有什么不同?...(2)propType 和 getDefaultProps React.createClass:通过proTypes对象和getDefaultProps()方法来设置和获取props....(1)使用react-thunk中间件 redux-thunk优点: 体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码 使⽤简单: redux-thunk没有引⼊像redux-saga...缺陷: 额外的学习成本: redux-saga不仅在使⽤难以理解的 generator function,⽽且有数⼗个API,学习成本远超redux-thunk,最重要的是你的额外学习成本是只服务于这个库的...Redux 状态管理器和变量挂载到 window 中有什么区别 两者都是存储数据以供后期使用。

    2K50

    react全家桶包括哪些_react 自定义组件

    run start 注意:项目名称不能使用大写字母 1.2 项目结构 1.3 创建TS项目 create-react-app --template typescript...,称之为是 Web App 解决问题 可以添加至主屏幕,点击主屏幕图标可以实现启动动画以及隐藏地址栏 实现离线缓存功能,即使用户手机没有网络,依然可以使用一些离线功能 实现了消息推送 等等一系列类似于Native...简化使用 redux 用来简化 react 应用中使用 redux 的一个插件 4.4.1 组件两大类 UI 组件 a....通过 props 接收数据(一般数据和函数) c. 不使用任何 Redux 的 API d. 一般保存在 components 文件夹下 容器组件 a....负责管理数据和业务逻辑,不负责 UI 的呈现 b. 使用 Redux 的 API c.

    5.9K20

    Redux + Hooks 工程实践

    点击上方关注 前端技术江湖,一起学习,天天进步 “都 1202 年了怎么还有人在用 Redux”——这大概不少人看到这篇文章的第一反应。...这时候就有同学可能要问了,你讲 Redux,那和 hooks 又有啥子关系呢。众所周知,在 React 团队推出 Hooks 这个概念后不久,Redux 也更新了对应的 API 来支持。...有了 Hooks 的加持能够让我们的 Redux React 项目更加简洁、易懂、扩展性更强。而且 Hooks API 在 Redux 的最佳实践建议中目前是 Level 2 的强烈推荐使用级别。...他拥有更简洁的表达方式,更干净的 React 节点数,更友好的 typescript 支持。 具体 Redux 相关的 API 怎么用,这里不做介绍,可以直接跳转官方文档进行了解。...Hooks ,例如我们需要提供一个数组数据简单操作,我们只关心 添加 和 数量,就可以封装一个 Hooks,这样实际使用方只需要关心 添加 和 数量 这两个要素,不用关心 redux 的具体实现方式了

    53010

    前端高频react面试题

    如何解决 props 层级过深的问题使用Context API:提供一种组件之间的状态共享,而不必通过显式组件树逐层传递props;使用Redux等状态库。React Hook 的使用限制有哪些?...状态管理器和变量挂载到 window 中有什么区别两者都是存储数据以供后期使用。...这个问题就设计到了数据持久化, 主要的实现方式有以下几种:Redux: 将页面的数据存储在redux中,在重新加载页面时,获取Redux中的数据;data.js: 使用webpack构建的项目,可以建一个文件...(1)使用react-thunk中间件redux-thunk优点:体积⼩: redux-thunk的实现⽅式很简单,只有不到20⾏代码使⽤简单: redux-thunk没有引⼊像redux-saga或者...这有助于维护单向数据流,通常用于呈现动态生成的数据。在使用 React Router时,如何获取当前页面的路由或浏览器中地址栏中的地址?

    3.4K20

    ​年终盘点: 复盘20+基于React的开源管理后台&插件

    项目特点: 适应任何后端(REST、GraphQL、SOAP等) 技术栈包括material-ui, redux, react-final-form, redux-saga, react-router,...开箱即用的高质量 React 组件。 使用 TypeScript 开发,提供完整的类型定义文件。 ⚙️ 全链路开发和设计工具体系。 数十个国际化语言支持。 深入每个细节的主题定制能力。...或自定义 支持浏览器原生校验 从这里快速构建你的表单 8.TanStack Query TanStack Query是一个基于React Hooks的轻量级查询库,它提供了简单易用的API来处理数据查询和数据变更的逻辑...12.Mantis React Mantis 是一个免费开源的 React Redux 仪表板模板,使用 MUI React 组件库制作,旨在实现灵活性和更好的可定制性。...项目功能: 封装了dva框架的数据流转,简单的请求可以不用在model和service中定义 封装了数据模拟,可以独立于后台开发前台功能 封装了分页请求,简化并规范了分页逻辑 封装了fetch请求,适应与后台多种交互请求

    1.7K10

    2018年前端流行哪些技术?

    如果不需要支持低版本 IE 的话,我们主要使用 React: React – 编写页面组件 Redux – 数据流和状态管理,一般结合 redux-saga 使用 React-router v4 – 前端路由管理...(Note:dva 整合了 redux, redux-router 以及 redux-saga。...在熟悉了基本的 Redux, Redux-saga, Redux-router 的使用之后,可以尝试用 dva 替代) Webpack – 前端构建工具 用到的其他类库,技术选择和工具 前端开发我在用到的其他类库...Data Visualization – 数据可视化和一些图表工具,使用最多的还是 ECharts,支持各种图表,交互和渲染模式,PC 端移动端通吃,文档很全,最近还成为了 Apache 孵化项目。...REST 有一种明日黄花的感觉,虽然还在用,但是感觉早晚被 GraphQL 等取代,毕竟我们真的越来越不关心数据是如何获取的,而应该关注在 store 如何设计上,专注在领域分析上面。

    2.6K10

    React之redux学习日志(reduxreact-reduxredux-saga)

    使用纯函数执行修改:reducer中,应该返回一个纯函数,函数接受先前的 state和action, 然后返回一个新的 state 3....Redux 搭配 React 使用 安装: npm install --save react-redux 3.1. react-redux在React中的使用方式   · 在react入口文件中注入...中的state不能够直接修改其中的值和统一数据格式,一般建议结合 immutable.js 使用 具体需查阅官方文档:https://immutable-js.github.io...当我们需要执行一些异步操作时,由于action中只能返回一个对象,从而需要借助一些中间件来达到目的,redux-thunk 和 redux-saga是常见的两种中间件。   ...、react-redux的基本用法和redux-saga中间件的使用,若有错误请各路大佬指出加以改正和学习 智者说话,是因为他们有话要说;愚者说话,则是因为他们想说。

    55830

    Taro 小程序开发大型实战(六):尝鲜微信小程序云(上篇)

    欢迎继续阅读《Taro 小程序开发大型实战》系列,前情回顾: 熟悉的 React,熟悉的 Hooks[1]:我们用 React 和 Hooks 实现了一个非常简单的添加帖子的原型 多页面跳转和 Taro...: 可以看到,点击云开发控制台左上角的第二个按钮,然后点击图中标红序号为1的 “+” 按钮,创建两个集合 user 和 post,这样我们就创建好了我们的数据库表。...View 中发起异步请求 配置使用 redux-saga 中间件,并将 sagas 跑起来之后,我们可以开始在 React 中 dispatch 异步的 action 了。...在循环内部,我们使用了 redux-saga 提供的 effects helper 函数:take,它用于监听 LOGIN action,获取 action 中携带的数据。...在 try 语句中,首先是使用了 redux-saga 提供给我们的 effects helper 函数:call 来调用登录的 API:userApi.login,并把 userInfo 作为参数传给这个

    2.3K20

    2023再谈前端状态管理

    当然这样并不优雅,在实际项目中我们通常使用类似redux-thunk、redux-saga这些中间件来支持处理异步。...如何处理数据间联动 react-redux的useSelector获取状态后,你可以编写一些逻辑来处理派生状态。如果派生状态需要复用,记得给抽离出来。...Dva dva 首先是一个基于 redux和 redux-saga的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router和 fetch,所以也可以理解为一个轻量级的应用框架。...Dva 的特点: 易学易用,仅有 6 个 api,对 redux 用户尤其友好,配合 umi 使用后更是降低为 0 API elm 概念,通过 reducers, effects 和 subscriptions...Valtio 简介 基于可变状态模型,利用 Proxy 获取一个和 React 集成在一起的不可变快照。 利用 Proxy 自动进行重新渲染优化,这个过程使用了状态使用跟踪技术。

    95710

    百度前端必会react面试题汇总

    /#/path(1)BrowserRouter它使用 HTML5 提供的 history API(pushState、replaceState 和 popstate 事件)来保持 UI 和 URL 的同步...所以即便在回调函数里,你拿到的还是初始的 props 和 state。如果想得到“最新”的值,可以使用 ref。我现在有一个button,要用react在上面绑定点击事件,要怎么做?...这是因为 Vue 使用的是可变数据,而React更强调数据的不可变。.../catch语法直接捕获处理;功能强⼤:redux-saga提供了⼤量的Saga辅助函数和Effect创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤;灵活:redux-saga可以将多个Saga...redux-saga缺陷:额外的学习成本:redux-saga不仅在使⽤难以理解的generator function,⽽且有数⼗个API,学习成本远超reduxthunk,最重要的是你的额外学习成本是只服务于这个库的

    1.6K10
    领券