搞不明白 React Hooks,有没有兄弟分享一下经验?

2020-10-13 09:35:36 +08:00
 yazoox

公司产品一直用的是 react-redux 做状态管理,用 saga 处理异步。

升级到了 16.8,听说有个 hooks,很方便。

看了官方文档,也搜索了一下,还是搞得不是很明白。

大家有没有看到比较好的文档 /文章,详细介绍分享这个 react hooks 的?求分享指点。谢谢。

另,这个 hooks 比 redux 好用么?能够取代 redux & saga 么?

6357 次点击
所在节点    React
31 条回复
Torpedo
2020-10-13 11:14:59 +08:00
hook 先学习基本的 hook 概念。
然后就是封装 hook 复用。
之前函数推荐纯组件,你可以这么写:一种函数组件有 hook,负责逻辑什么的;一种函数还是纯组件,没有 hook 和状态。

在 hook 之前,复用都是用高阶组件。但是高阶组件不能很好的控制顺序,互相之间组合挺麻烦的。但是 hook 之间组合很方便,也容易复用。
Torpedo
2020-10-13 11:16:56 +08:00
@cityboy useContext 这种主要用来共享一些变量吧。react-redux 也是用的这个。只不过一般使用的时候,context 里变量都是用来存状态的,这样状态变量,useContext 都会变。
但是 react-redux 用的是一个状态引用,发布订阅模式,保证只更新 selector 选中的状态部分
ghosthcp516
2020-10-13 11:17:51 +08:00
你可以理解成函数内的 import / export
stabc
2020-10-13 11:21:43 +08:00
@gouflv LZ 不就是在求教吗。这种虚心的态度你也能喷?而且你自己的理解也不咋地啊
dartabe
2020-10-13 11:21:53 +08:00
我自己在写完 Redux 之后 又用 Hook 包了一层 这样在其他模块里面要用的话 就更方便了

也是网上看来的 不知道算不算最佳实践

https://github.com/zjusticy/flashCards/blob/master/src/hooks/useAuth.ts
agdhole
2020-10-13 11:50:28 +08:00
所以又要状态管理又要数据共享,应该用什么?
cityboy
2020-10-13 11:58:28 +08:00
@KuroNekoFan redux 那一套东西写起来太冗余了,我看 antd pro v5 的共享变量方式不错,但是不知道自己怎么实现
lemon6
2020-10-13 12:18:13 +08:00
hooks 代码量少,class 代码结构清晰。仅此而已
imjamespond
2020-10-13 12:30:24 +08:00
hooks 没法实现 componentshouldupdate,的 prevouspros 和 state,只是简单对比,而且 useeffect 箭头 func 中包括的 props 要写到第二变量数组监视
namelosw
2020-10-13 22:32:21 +08:00
继续 Redux 把,只不过可以 useReducer + useContext,而不再用 ReactRedux 了

纯 hooks 用 useState 替代 useReducer 很难。简单的情况用 useState 的 setter 就够了还行,如果还要有逻辑抽方法啥的调 setter 的话,要加的 useMemo 和 useCallback 太多了,最后一直在写没用的 useMemo 和 useCallback,还记不住要写哪些,而 useReducer 的 dispatch 不会导致重绘。
KuroNekoFan
2020-10-14 10:17:00 +08:00
@cityboy 一堆 reducer,action 定义文件什么的是挺冗余的,但是我觉得没必要那样,我一般一个 store 就完事了,当然,状态提升要谨慎

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/714379

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX