redux

React技术揭秘

冷暖自知 提交于 2020-10-26 06:31:03
写在前头 本文希望通过揭开一些 React 隐藏的技术细节, 来辅助对官方文档中某些概念的理解 读者可以将本文看做对官方文档的补充 行文方式我采用的是 提问-解答 的方式, 即先根据官方文档给出的使用规则, 提出问题, Why ? 然后我们根据实际的调试再来解答这个 Why, 最后系统的整理这些 Why 变成 How, 如果你们有更好的行文方式, 也欢迎留言讨论 另外为了阅读体验, 我不会粘贴过多的源码, 避免打断各位读者的思路. 正文 从 Hooks 一些使用限制来看背后隐藏的细节 一. Hooks 为什么只能写在 FCComponent ? React 怎么知道的 ? 其实没有什么黑魔法, React 在初始化的过程中会构建一个 ReactCurrentDispatcher 的全局变量用于跟踪当前的 dispatcher dispatcher 可以理解成一个 Hooks 的代理人 由于你在 FCC 外部执行 Hooks, 这时候要么 React 没有初始化, 要么就是 Hooks 无法关联到 ReactCurrentDispatcher, 大部分场景都是因为生命周期的错配而报错, 所以 React 也并不能百分百知道你的 Hooks 执行时机是否正确 二. React useState如何在没有 Key 的情况下只通过初始值来判断读写的是哪个 State ? 官方文档在关于