CodingWithAlice

我的一方小天地,如果对你有帮助,那真的太好了

lodash 的 isEqual和 cloneDeep

lodash 的 isEqual和 cloneDeep 总结: 1、isEqual 深度比较 函数的比较规则:【浅比较(只比较代码,不比较闭包)】先判断是不是 同一个引用 -> 如果不是,判断toString() 转换后代码是否一致 -> 不会深入比较闭包 + this (有些变量值运行时确定,无法静态解析) ...

useEffect 依赖的 state 初始化算变化吗

useEffect 依赖的 state 初始化算变化吗 总结:state 初始化是否算“变化”? 不算。useState(0) 的初始赋值是同步的,useEffect 只是在挂载后检查依赖时发现 count 存在(值为 0) -> 但原本 挂载后, useEffect 的副作用会被执行一次,因此只执行一次 1、依赖项为 空数组 组件挂载(初次渲染)后,立即执行一次...

class 组件的 setState 和 函数组件的 useState 的使用差异

class 组件的 setState 和 函数组件的 useState 的使用差异 总结: this.setState 的第二个参数可以传递一个回调函数,在状态更新完成且组件重新渲染后执行,类似于 useEffect 的副作用操作 useState 的更新函数本身不支持回调参数,可以通过 useEffect 依赖模拟 React ...

class 组件中 state 初始化导致的闪烁

class 组件中 state 初始化导致的闪烁 总结: 1、class 组件声明的 state 如果来源于 props 可以直接赋值,避免闪烁 2、value ?? ‘’ 和 value || ‘’ 的区别是 ?? 只关心 null 和 undefined(2个),**   会过滤所有的 falsy 值(6个)** ...

class 组件 componentDidUpdate 的生命周期认知更新

class 组件 componentDidUpdate 的生命周期认知更新 总结: 1、class 组件中,componentDidUpdate 生命周期 在 第一次 render 后才会执行 2、class 组件中,render 可以直接通过 props/state 变化触发 3、class 组件中,想要阻塞 render ,只有 shouldComponentUpdate 生命周...

TS 声明 key 为 number value 为 boolean 的对象 hash

TS 声明 key 为 number value 为 boolean 的对象 hash 总结: 方案一、二 底层逻辑完全一致 方案1:索引签名 const hash: { [key: number]: boolean } = {} 方案2:内置工具类 Record Record<number, boolean> 是 TS 的...

在组件回调函数获取最新值失败的原因和方案

在组件回调函数获取最新值失败的原因和方案 总结: 1、原因:在 columns validate 回调函数中使用 组件变量时,变量永远是 生成 的值,后续的变更不会传入变化 函数组件每次渲染都是独立的闭包,所有的内部函数捕获的都是 创建时的状态快照,不是调用时的状态 2、解决方案:动态获取可以①使用 ref + ②useMemo useEffect + setColu...

防抖节流 + 在React组件中的使用踩坑

防抖节流 + 在React组件中的使用踩坑 总结: 1、平时键盘抬起就会搜索,防抖后,间隔一段时间不输入才会搜索,节流后,在频繁触发的事件流中,函数以固定的频率执行 2、在 组件中实现 防抖时,需要注意配合 useCallback 避免 组件重新渲染导致 定时器失效 3、使用防抖后,需要清理 一、实际应用 - 踩坑记录 1、使用场景 防抖 debounce ...

useEffect+addEventListener 的坑

useEffect+addEventListener 的坑 总结: 即使 React 组件重新渲染,事件监听绑定的依旧是 当时的函数引用,捕获的是当时的作用域 和变量 背景问题 ​ addEventListener 事件监听器绑定的回调函数,一直是旧的 原因 ​ addEventListener 事件监听器 绑定时 捕获的是 当时的 props 和 state(当时的作用...

循环方法与 async/await 的兼容性

循环方法与 async/await 的兼容性 场景:forEach 遍历过程中 await 接口返回失效 总结: 1、不能和 async/await 一起使用的循环方法:forEach、map、filter、reduce 2、能够和 async/await 一起使用的循环方法:for循环、for-of、for-in 一、好用的 异步并行执行 的写法...