From 91a9bf82fde976f544468c764328257ae82e209b Mon Sep 17 00:00:00 2001 From: ascoders <576625322@qq.com> Date: Mon, 19 Oct 2020 10:22:17 +0800 Subject: [PATCH] fix bug --- ...7\262\276\350\257\273\343\200\212React Hooks\343\200\213.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/079.\347\262\276\350\257\273\343\200\212React Hooks\343\200\213.md" "b/079.\347\262\276\350\257\273\343\200\212React Hooks\343\200\213.md" index 0958b87e..a4fe7577 100644 --- "a/079.\347\262\276\350\257\273\343\200\212React Hooks\343\200\213.md" +++ "b/079.\347\262\276\350\257\273\343\200\212React Hooks\343\200\213.md" @@ -276,7 +276,7 @@ Hook 函数必须以 "use" 命名开头,因为这样才方便 eslint 做检查 为什么不能用 condition 包裹 useHook 语句,详情可以见 [官方文档](https://reactjs.org/docs/hooks-rules.html#explanation),这里简单介绍一下。 -React Hooks 并不是通过 Proxy 或者 getters 实现的(具体可以看这篇文章 [React hooks: not magic, just arrays](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e)),而是通过数组实现的,每次 `useState` 都会改变下标,如果 `useState` 被包裹在 condition 中,那每次执行的下标就可能对不上,导致 `useState` 导出的 `setter` 更新错数据。 +React Hooks 并不是通过 Proxy 或者 getters 实现的(具体可以看这篇文章 [React hooks: not magic, just arrays](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e)),而是通过链表实现的,每次 `useState` 都会改变下标,如果 `useState` 被包裹在 condition 中,那每次执行的下标就可能对不上,导致 `useState` 导出的 `setter` 更新错数据。 虽然有 [eslint-plugin-react-hooks](https://www.npmjs.com/package/eslint-plugin-react-hooks) 插件保驾护航,但这第一次将 “约定优先” 理念引入了 React 框架中,带来了前所未有的**代码命名和顺序限制**(函数命名遭到官方限制,JS 自由主义者也许会暴跳如雷),但带来的便利也是前所未有的(没有比 React Hooks 更好的状态共享方案了,约定带来提效,自由的代价就是回到 renderProps or HOC,各团队可以自行评估)。