V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yukinotech
V2EX  ›  程序员

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

  •  1
     
  •   yukinotech · 2019-10-10 14:21:32 +08:00 · 3176 次点击
    这是一个创建于 1872 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这两天学习了 react hooks 的 API,和 vue,和 class 组件相比较之后,产生了一些想法。

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

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

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

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

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

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

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

    一些小思考 https://zhuanlan.zhihu.com/p/85569941
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1235 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.