当前位置:首页 > 科技  > 软件

深度探讨 useEffect 使用规范

来源: 责编: 时间:2023-12-22 09:36:09 380观看
导读我们在乘坐地铁或者公交车的时候,在地铁门或者公交车门的旁边往往会有「禁止依靠」这样的标识。目的是为了警告乘客不要依靠车门,否则开门的时候容易出现不可预测的危险。但是如果我们仔细去分析这个危险的话,就会知道,他

39B28资讯网——每日最新资讯28at.com

我们在乘坐地铁或者公交车的时候,在地铁门或者公交车门的旁边往往会有「禁止依靠」这样的标识。目的是为了警告乘客不要依靠车门,否则开门的时候容易出现不可预测的危险。39B28资讯网——每日最新资讯28at.com

但是如果我们仔细去分析这个危险的话,就会知道,他的真实情况是,在车辆运行过程中,车门紧闭,你依靠在车门上也并不会出现危险,我们在上班高峰期挤地铁的时候,大量的人也不得不紧靠车门,甚至有的人被挤扁压在车门上。39B28资讯网——每日最新资讯28at.com

在制定团队项目规范时也会这样,例如,我在带领团队时,一定会制定一条规范,要求每次代码提交之前,个人必须检查你的代码里是否存在意外的修改,可能有的人在提交之前手抖往代码里输入了一个空格或者逗号,从而导致重大事故。这是一个低概率发生的事情,但是我仍然会要求每次提交都要检查。39B28资讯网——每日最新资讯28at.com

那么,是不是也就意味着,如果不遵守我这个规范,就一定会发现不可预测的重大事故呢?其实并非如此,我们制定规范的目的是为了让程序变得可控,比如团队里面有10个人的习惯都比较好,从来不会出现意外内容提交的情况,但是只要有一个人出现两次因为手抖把意外的修改提交到了代码仓库,那么这条规范就会出现。39B28资讯网——每日最新资讯28at.com

既然这条规范的出现是为了避免意外的发生,于是有一个项目成员就对我的规范提出了质疑,他认为可以在配置上增加 pre-commit 的代码规则检测,如果有意外的发生,那么代码规则检测不会通过,我们就不用每次在提交之前花费心力去检查每一条 diff 里的修改了。39B28资讯网——每日最新资讯28at.com

虽然我最终没有同意他的提议,但这是一个非常好的思路39B28资讯网——每日最新资讯28at.com

所以作为一个优秀的开发者,我们到底是应该只要遵循规范就是完事了,还是应该去看懂规范出现的背后逻辑,从而灵活的运用他,或者探寻更好的解决方案呢?39B28资讯网——每日最新资讯28at.com

我的答案是后者。39B28资讯网——每日最新资讯28at.com

如果在这个观念的基础之上我们能达成共识,我们再来一起结合 React 官方文档,对 useEffect 的使用规范进行深入探讨。39B28资讯网——每日最新资讯28at.com

在这之前,我们要首先明确一下 useEffect 的语法规则,useEffect 的依赖项必须是 state 与 props,否则依赖项发生了变化,effect 也不会执行。所以有的人说:我不愿意把 state 放到依赖项里,甚至反感这样的行为,我认为是没有任何理论依据的。39B28资讯网——每日最新资讯28at.com

一、计算属性

在 vue 和 mobx 里都有计算属性这样的概念。因此有的人就想,在 react hook 中,是否可以借助 useEffect 来达到计算属性的目的。39B28资讯网——每日最新资讯28at.com

官方文档明确的建议是,不需要这样做39B28资讯网——每日最新资讯28at.com

// 案例来自官方文档// https://zh-hans.react.dev/learn/you-might-not-need-an-effectfunction Form() {  const [firstName, setFirstName] = useState('Taylor');  const [lastName, setLastName] = useState('Swift');  //  
                

本文链接:http://www.28at.com/showinfo-26-51826-0.html深度探讨 useEffect 使用规范

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 14张图巧妙的理解数据结构

下一篇: Python 中的 Time 和 Datetime 模块

标签:
  • 热门焦点
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 女孩租房开2小时空调用完100元电费引热议:5级能耗惹不起 月薪过万电费也交不起

    近日,江苏苏州一女孩租房当天充值了100元电费,开着空调不到2小时发现电费已用完。对于为什么这个快,房东表示,电表坏了这种情况很多,之前也遇到过,给租客换
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • Meta盲目扩张致超万人被裁,重金押注元宇宙而前景未明

    图片来源:图虫创意日前,Meta创始人兼CEO 马克·扎克伯发布公开信,宣布Meta计划裁员超11000人,占其员工总数13%。他公开承认了自己的预判失误:“不仅
Top