我一直在尝试 React Hooks,它们似乎确实简化了诸如存储状态之类的事情。然而,它们似乎能用魔法做很多事情,我找不到一篇关于它们实际工作原理的好文章。
第一件看起来很神奇的事情是,每次调用函数组件返回的 setXXX 方法时,调用像 useState() 这样的函数是如何导致重新渲染功能组件的?
当功能组件甚至没有在挂载/卸载上运行代码的能力时,像 useEffect() 这样的东西如何伪造 componentDidMount ?
useContext() 如何实际访问上下文,它如何知道哪个组件正在调用它?
而且这甚至没有开始涵盖已经出现的所有 3rd 方挂钩,例如 useDataLoader,它允许您使用以下...
const { data, error, loading, retry } = useDataLoader(getData, id)
数据、错误、加载和重试如何在更改时重新渲染您的组件?
抱歉,问题很多,但我想大多数问题都可以概括为一个问题,即:
钩子背后的函数如何实际访问调用它的功能/无状态组件,以便它可以记住重新渲染之间的事情并使用新数据启动重新渲染?