关于 react hooks 的一些不成熟的想法

2019-10-10 14:21:32 +08:00
 yukinotech
这两天学习了 react hooks 的 API,和 vue,和 class 组件相比较之后,产生了一些想法。

1、useEffect 不仅仅是替代了生命周期,第二个参数有点实现了类似 vue 的 watch 的功能,尽管是浅监控( object.is 进行判断),可以实现某个变量变化后的,执行一段副作用代码。

2、而 useMemo 有点实现了类似 vue 的 computed 的功能。不过官方也说了 useMemo 不能保证一定缓存。

感觉上 react hooks 确实在场景处理上更加灵活一些,不知道大家怎么看待的
3176 次点击
所在节点    程序员
10 条回复
cuzfinal
2019-10-10 15:22:31 +08:00
这是为了让你刚方便的使用函数式组件,别跟 vue 比
VDimos
2019-10-10 15:38:36 +08:00
hooks 是为了解决函数式组件无状态的问题,vuex 解决的是状态管理的问题,vuex 对比的应该是 mobx
yukinotech
2019-10-10 15:57:33 +08:00
@cuzfinal 你说的很对,开发团队增加第二个参数这种功能,就是为了更加方便的使用函数式组件。可见这种类似于 watch 和 computed 的功能对于某些场景是比较方便的。和 vue 类似功能的比较就是思路的延伸,为什么不能类比呢?个人觉得是一种思路的转换
yukinotech
2019-10-10 16:03:16 +08:00
@VDimos 你可能没有区分 vuex 和 vue 的关系,computed 和 watch 都是 vue 的特性,而不是 vuex 的内容,hooks API 本身和状态管理是无关,自定义 hooks 本身可以复用逻辑,但是不能共享状态的。所以我有点不太明白你在说啥,这个话题和状态管理有关系吗。。
momocraft
2019-10-10 16:09:03 +08:00
1

useEffect 仍然不能自动追踪 “任意" 变量,需要有什么东西 "推" 变量变化给 react。比如用 rx/mobx 驱动 prop 或 state 的变化。和 watch 感觉方向有微妙的差别。

灵活就主观了,v2 很多 vue 爱好者的。
shunia
2019-10-10 16:11:27 +08:00
useEffect 比 class 写法省了几十行代码才是真的爽。
但是好像 vue 本来就挺省的。。。

从另外的角度来说,不太懂有什么可比性。

另外你说的关于 hooks 本身的特性都说的很对。
cjc2017
2019-10-10 16:17:25 +08:00
@momocraft 经常在 v 站看到你努(hua)力(shui)工(mo)作(yu)
VDimos
2019-10-10 16:32:28 +08:00
@yukinotech 搞混了,想当然以为 computed 和 watch 是 vuex 的了
lithium4010
2019-10-10 16:33:33 +08:00
最近在用 hooks 重构项目,清爽干净好理解,舒服
monkindey
2019-10-10 22:47:48 +08:00
Function Component + Hook + Context 写代码不能再爽 。

一些小思考 https://zhuanlan.zhihu.com/p/85569941

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

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

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

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

© 2021 V2EX