Hook 的规则 ( Day18 )

使用 Hook 官方设定需要遵守的两个规则,并提供了一个 linter plugin 来自动化地实行这些规则。
以下实际使用 create-react-app 创建专案,并测试是否会有规则的提醒。

Hook 的两个规则

只在最上层呼叫 Hook

不要在回圈、条件式或是巢状的 function 内呼叫 Hook。

只在 React Function 中呼叫 Hook

别在一般的 JavaScript function 中呼叫 Hook。 a.k.a

  • 在 React function component 中呼叫 Hook。
  • 在自定义的 Hook 中呼叫 Hook。

使用 create-react-app 创建专案

npx create-react-app rules-of-hooks //创建一个 rules-of-hook 的专案 
cd rules-of-hooks/ //进入专案
npm start //启动 Live Server

lint 的错误提示,示例

我们可以在单一的 component 中使用多个 State 或 Effect Hook,而 Hook 的执行顺序会依照呼叫的顺序执行,如违反官方订定的规则,则会造成执行顺序的错误。使用 create-react-app 预设会加入 eslint-plugin-react-hooks 来确保规则被遵循。

以下示例排列

  • 在条件式中呼叫 Hook
  • 在回圈呼叫 Hook
  • 在巢状的 function 内呼叫 Hook


以上今天。

参考资料:
https://zh-hant.reactjs.org/docs/hooks-rules.html
https://stackoverflow.com/questions/59633005/how-is-eslint-integrated-into-create-react-app


<<:  【Day 17】- 手动更新汇率太麻烦了! 汇率爬虫搭配 OpenPyXL 做到自动读取&更新汇率!

>>:  [第17天]理财达人Mx. Ada-股款交割

Day 18: 人工智慧在音乐领域的应用 (AI作曲-基因演算法二)

今天我们开始详细的介绍作曲是如何与基因演算法做结合 首先我们先快速复习一下基因演算法的流程: (1)...

线上课程学习心得

铁人赛到今天终於30天了,最後就来分享一下自己在现在平台学习的感想以及选择课程内容的技巧吧 课程选择...

DAY15: HTTP GET请求

今天要介绍的有点偏向处理HTPP请求的後续,在Web开发中,HTTP请求中最常用的就是Get与Pos...

铁人赛 Day28 -- AOS.js -- 滚动到元素的位置时,才开始动画

前言 相信很多人都会看到在滑动网站时,滑到一个地方就会出现动画,滑回去再滑回来又会再出现一次, 那这...

咏唱防御魔法,抵御外敌攻击AWS上的服务

防御魔法 今日会继续介绍其他服务的撰写方式,因为篇幅关系,之前讲过的方式,就不会继续在讲述: EC2...