- 博客(411)
- 收藏
- 关注
原创 react18中redux-promise搭配redux-thunk完美简化异步数据操作
用过的应该知道,操作相对繁琐一点,dispatch本只可以出发。让dispatch可以返回一个函数。大大简化了操作。
2024-11-01 10:25:44 385
原创 用jest做单元测试不得不知道的起手式配置,闭坑指南
做单元测试有很多的工具,今天在一个老项目中看到的用的工具是用的jest做的单元测试,特尝试更新下,遇到不少的问题。
2024-10-30 22:36:16 233
原创 react18中redux-saga实战系统登录功能及阻塞与非阻塞的性能优化
通过前面的案例分析,我们可以概括出redux-saga做为redux统一action的形式,在redux-saga中,从UI中dispatch的action为原始对象集中处理异步等存在副作用的逻辑通过转化effects函数,可以方便进行单元测试完善和严谨的流程控制,可以较为清晰的控制复杂的逻辑。
2024-10-29 14:49:53 516
原创 react18中不得不提的redux-saga使用全面分析
redux-saga中,同步依旧直接dispatch一个,与之前的保持不变在组件页面派发的异步actionType的名字,不要与同步的相同,因为saga的执行流程,会导致执行两变reduce函数,可以根据自己的项目需要进行自定义命名。比如这里。
2024-10-28 15:18:41 820
原创 react18中Redux Toolkit进一步排除公共数据仓库使用的心智成本
这一套下来,简直不要太简单了,同步异步的操作与大同小异了,很容易理解。参考redux-toolkit官网地址。
2024-10-25 16:34:10 479
原创 react18中react-thunk实现公共数据仓库的异步操作
redux及都只能实现数据的同步修改更新,有点类似于vue中的mutation,只能做同步操作,异步的话不用actions来实现。由于在项目始终不可避免要实现的异步数据的更新,这明显不够用了。是时候引入我们的异步中间件了。
2024-10-25 15:44:11 604
原创 react18中引入redux及react-redux来管理公共数据仓库
获取store中的数据触发reducer中的方法immutable中fromJS方法可以去官网参考它对不同类型的数据操作使用。
2024-10-25 14:42:27 696
原创 react18中使用redux管理公共数据仓库实现数据immutable更新
Immutable.js出自Facebook,是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构,使用结构共享。所有的更新操作都会返回新的值,但是在内部结构是共享的,来减少内存占用在上一篇介绍redux的文章,我们可以看到在创建的reducer中进行数据更改的时候,会使用…来复制状态数据,为的就是不对原数据进行直接修改,只做替换,就是为了实现react的数据不可变immutable。
2024-10-25 13:44:39 547
原创 r18中使用redux管理公共数据仓库怎么实现
创建一个仓库,这个仓库的参数是我们创建的一个个reducer,每个reducer里面有两个参数,一个初始状态state作为数据源,一个根据不同操作更新数据的actiongetState获取store中的所有数据状态dispatch是页面其他地方比如按钮,生命周期中,触发更新状态数据subscribe是在dispatch出发更新,订阅更新状态,获取最新的数据状态是subscribe返回值,用来在组件销毁时清除订阅,提升性能。
2024-10-25 09:18:04 288
原创 react18中的useEffect和useLayoutEffect的原理分析
函数组件在渲染(或更新)期间,遇到 useEffect 操作,会基于 MountEffect 方法把 callback(和依赖项)加入到 effect 链表中!1、按照顺序执行期间,首先会检测依赖项的值是否有更新「有容器专门记录上一次依赖项的值」;清除函数的副作用,比如在组件卸载时清除定时器,且在里面函数里面获取的状态是上次更新的状态,不是当前最新的值,所以需要使用 useRef 保存状态。2、遇到依赖项是空数组的,则只在第一次渲染完毕时,执行相应的 callback。useEffect 的原理。
2024-10-24 10:09:54 654
原创 react18中的合成事件与浏览器中的原生事件
React 通过将事件 normalize 以让他们在不同浏览器中拥有一致的属性。合成事件SyntheticEvent 实例将被传递给你的事件处理函数,它是浏览器的原生事件的跨浏览器包装器。除兼容所有浏览器外,它还拥有和浏览器原生事件相同的接口,包括 stopPropagation() 和 preventDefault()。如果因为某些原因,当你需要使用浏览器的底层事件时,只需要使用 nativeEvent 属性来获取即可。合成事件与浏览器的原生事件不同,也不会直接映射到原生事件。
2024-10-23 14:50:33 971
原创 react18&16中的setState同步还是异步的深层分析
setState 是 react 中更新 UI 的唯一方法,其内部实现原理如下:调用 setState 函数时,React 将传入的参数对象加入到组件的更新队列中。React 会调度一次更新(reconciliation),在调度过程中,React 会根据组件的 state 和 props 来计算出组件的新的状态,并比较新旧的状态,决定是否需要重新渲染组件。
2024-10-23 11:33:42 565
原创 react18中的受控与非受控组件及ref的使用
原理:render 函数执行的时候,获取 vdom 的 ref 属性,然后根据 ref 的值去 dom 树中找对应的节点。非受控组件,基于 ref 获取 dom 的值,来实现页面的更新,不推荐使用,偶尔特殊的场景会使用。受控组件,基于修改 state 的值,修改组件内部的状态,来实现页面的更新,推荐使用。
2024-10-23 09:39:21 604
原创 react18中的函数组件底层渲染原理分析
插槽的作用,就是将父组件中的内容,原封不动的传递给子组件。想办法让组件更加灵活,具有更强的复用性。总结: 被冻结的对象,既是不可扩展的,也是密封的。被密封的,也是不可扩展的。元素,是数组的情况下,要使用下面的方式来接收,也可以使用。属性时,需要先拷贝一份,然后才能修改。插槽内容可以根据不同的需求,放到不同的位置。children 属性,传递子组件的。所以,我们在组件内部修改。html 片段用插槽。里面的方法来进行处理。
2024-10-22 11:36:52 526
原创 react18中的jsx 底层渲染机制相关原理
虚拟 dom 对象,是框架内部构建的一套对象体系,对象相关的属性方法都是 react 内部规定的,基于这些属性描述出,我们所有构建的视图中,dom 节点相关的特征。真实 dom,就是浏览器页面中,让用户看到的页面内容。执行后,会生成一个虚拟 dom 对象。,jsx 最终会被编译成。
2024-10-22 10:15:58 596
原创 react18中在列表中如何使用useCallback进行渲染优化
实现的需求:在列表中如何缓存每个子组件,父组件重新渲染,子组件不更新,下面的列子假设Chart组件被包裹在memo中。你希望在ReportList组件重新渲染时跳过重新渲染列表中的每个Chart。但是,你不能在循环中调用。
2024-10-21 16:32:51 538
原创 react18中在列表项中如何使用useRef来获取每项的dom对象
在react中获取dom节点都知道用ref,但是在一个列表循环中,这样做是行不通的,需要做进一步的数据处理。
2024-10-18 10:36:19 586
原创 react18中如何监听localstorage的变化获取最新的本地缓存
以上是比较常见的两种简单的方法,当然还有其他的实现,比如事件轮询,对进行封装拦截等等,都可以去尝试下,有空我再补充完善吧。
2024-10-17 10:27:44 534
原创 react18中实现简易增删改查useReducer搭配useContext的高级用法
useReducer和useContext前面有单独介绍过,上手不难,现在我们把这两个api结合起来使用,该怎么用?还是结合之前的简易增删改查的demo,熟悉vue的应该可以看出,vuexuseContext类似于vue中的enjectprovided`,来分析下思路。
2024-10-16 10:07:36 590
原创 react实现实时计时的最简方式
js中时间的处理,不借助于moment/dayjs这样的工具库,原生获取格式化的时间,最简单的实现方式可以参考下面这样。
2024-10-10 16:02:30 587
原创 vue3.5系列之响应式props解构的几点技巧对比
在最新的版本3.5x中,对props的能力也进行了加强。下面,我们具体看下有哪些变化,给我们带来的新的体验!
2024-10-10 09:15:25 441
原创 vue3.x系列之封装响应式的hooks技巧
这里我们传入的是一个url接口的ref,不是普通的字符串数据hooks里面接收的时候,接口请求使用toValue转为普通的字符数据监听副作用,当ref数据变化时,及时响应来发起新的请求delay方法模拟接口请求延时效果,区分出请求中的状态。
2024-10-09 17:07:31 473
原创 vue3.x系列之v-model的使用技巧及面试高频问题
在前面的一篇文章中,我们分析了v-model在v2版中的用法。这次我们分析下在v3中的使用技巧。学习之前,请忘记之前的v2语法,现在的更加简洁易用。
2024-10-09 10:55:11 552
原创 uniapp中检测应用更新的两种方式-升级中心之uni-upgrade-center-app
uniapp一个很是用的功能,就是在我们发布新版本的app后,需要提示用户进行app更新,并告知用户我们新版的app更新信息,以使得用户能及时使用上我们新开发的功能,提升用户的实用度和粘性。
2024-09-30 11:43:12 733
原创 vue项目中的node、node-sass、sass-loader之间的版本关系
这个报错,想必大部分人都会遇到,版本不适配的问题,记录下解决方案。
2024-09-27 11:03:24 327
原创 MVC、MVP和MVVM三种设计模式之间的区别是什么
在MVC中,View会直接从Model中读取数据而不是通过 Controller;View和 Controller之间存在多对一关系。在MVP中,View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部;View和Presenter之间是一对一关系。
2024-09-21 11:51:48 1282
原创 vue2基础系列教程之动态组件component你不得不知道的知识点及面试高频问题
component动态组件语法一般是配合is属性来实现的。在一个多标签的界面中使用is来切换不同的组件。
2024-09-18 15:02:31 722
原创 uniapp导入iconfont报错的处理方法Uncaught Error: Cannot find module ‘./common/iconfont.woff2?t=1726398902942‘
控制台报错消失了,说明我们的配置生效了。
2024-09-15 22:44:12 296
原创 vue2基础系列教程之v-model及面试高频问题
根据 vue 的设计理念,自定义组件上的属性和事件,会默认绑定到组件的根元素上,如果想要绑定到组件的原生事件上,需要使用.native修饰符。也就是我们在组件内部不使用 props 进行显示的接受,这些属性和事件会默认的绑定到组件的根元素上。这三个属性我在组件内部没有使用 props 进行接受,但是却可以正常的使用。data() {return {message: "请输入要显示的文字",},methods: {
2024-09-14 18:01:43 722
原创 vue2基础系列教程之todo的实现及面试高频问题
v-for迭代的数据可以是array,也可以是object,如果是object,则内部使用的Object.keys进行的迭代。v2里面,当在同一个元素或组件上同时使用v-for和v-if,v-for的权限高于v-if。v-show和v-if的区别主要有。
2024-09-14 14:59:22 636
原创 react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot
支持 js 表达式,包括函数调用,变量引用,三目运算,逻辑运算等。
2024-09-12 17:18:31 523
原创 nodejs基础教程之-异步编程promise/async/generator
所谓"异步",简单说就是一个任务分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段,比如,有一个任务是读取文件进行处理,异步的执行过程就是下面这样。当你在执行一个函数的时候,你可以在某个点暂停函数的执行,并且做一些其他工作,然后再返回这个函数继续执行, 甚至是携带一些新的值,然后继续执行。当你在执行一个函数的时候,你可以在某个点暂停函数的执行,并且做一些其他工作,然后再返回这个函数继续执行, 甚至是携带一些新的值,然后继续执行。相应地,连续的执行,就叫做同步。
2024-09-12 11:47:05 1211
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人