这个demo里面演示了 use的两种使用方式:
- 组件的props接受一个promise,然后在这个组件内部 use这个 promise. 对应Message这个组件
- 组件自身内部创建了一个promise,然后在组件内部 use这个promise . 对应ProductList 这个组件.
现象
ProductList这个组件中 productJson = use(productPromise);
这行代码 会导致 useMemo中的fetch products 疯狂执行发请求.而且从log日志来看 useMemo好像没有起到缓存的作用.
问题就是 为什么会这样?
可以尝试打包应用后再检查一下,如果没有出现上述问题,那么可能是因为:React的Function组件在调试模式下不会被缓存,而是会每次都重新执行渲染(但原有的Class组件则不会);这是我以前写React遇到的一个现象,主要就是开发和调试的表现存在不一致性,具体原因没有深究过。