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

想问大家公司目前使用 react hooks 的情况怎么样惹

  •  1
     
  •   HariopaNic · 2021-02-08 13:57:52 +08:00 · 3463 次点击
    这是一个创建于 1385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司一直没用,我最近学了下想在下个迭代试试,毕竟想学点新东西,不知道现在大环境下 react hooks 发展成什么样了,大家所在的公司现在比较侧重用 react hooks 嘛

    34 条回复    2021-02-20 11:31:59 +08:00
    llb123
        1
    llb123  
       2021-02-08 14:12:48 +08:00
    已经全面用 hook 了
    Jirajine
        2
    Jirajine  
       2021-02-08 14:14:30 +08:00 via Android
    hook 是 react 的精髓,不用 hook 不如改用 vue 。
    duduaba
        3
    duduaba  
       2021-02-08 14:29:11 +08:00
    全面使用,老代码不动,新功能必须 hooks
    bzw875
        4
    bzw875  
       2021-02-08 14:36:16 +08:00
    入职以来全是 react hook,搞得我类组件都不熟悉。
    karott7
        5
    karott7  
       2021-02-08 14:44:33 +08:00 via iPhone   ❤️ 1
    用了 hooks 一年过了,真香,再也不想写类组件了
    southlink
        6
    southlink  
       2021-02-08 15:21:57 +08:00
    hooks + ts 香的一批
    DOLLOR
        7
    DOLLOR  
       2021-02-08 15:26:41 +08:00
    我曾经因为 class 嫌弃 react,后来因为 hook 喜欢上 react 。
    10bkill1p
        8
    10bkill1p  
       2021-02-08 15:50:35 +08:00
    老项目还是 class,新项目一律 hooks
    weimo383
        9
    weimo383  
       2021-02-08 16:24:25 +08:00 via Android   ❤️ 4
    惹,你竟然说惹
    weixiangzhe
        10
    weixiangzhe  
       2021-02-08 17:00:19 +08:00 via Android
    hook 加 ts 加一
    imjamespond
        11
    imjamespond  
       2021-02-08 17:02:40 +08:00 via Android
    看情况,hooks 要在 fc 里,fc 不能用修饰
    zhuweiyou
        12
    zhuweiyou  
       2021-02-08 17:04:16 +08:00
    全面 hooks
    imjamespond
        13
    imjamespond  
       2021-02-08 17:04:25 +08:00 via Android
    fc 的 setstate 没有 callback,不方便
    gxm44
        14
    gxm44  
       2021-02-08 17:36:00 +08:00
    全面 hooks
    wobuhuicode
        15
    wobuhuicode  
       2021-02-08 17:37:53 +08:00
    @imjamespond hook 之后不需要 callback,直接使用 useeffect 就好了
    imjamespond
        16
    imjamespond  
       2021-02-08 17:39:50 +08:00 via Android
    @wobuhuicode 要的哦,比如有 a,b 两个按钮都要改某个 state 但实现业务不同,回调不能相同哦
    azcvcza
        17
    azcvcza  
       2021-02-08 17:40:27 +08:00
    @imjamespond 可以自己封一个
    ```
    function useCallbackState(state){
    const callbackRef = useRef();
    const [data, setData] = useState(state);

    useEffect(
    ()=>{

    callbackRef.current && callbackRef.current(state)
    },[state]
    )

    return [data, function(d, callback ){
    callbackRef.current = callback;
    setData(d);
    }]

    }
    ```
    正常使用就是 const [s1, setS1] = useCallbackState(1); // 返回的 setS1 = function(state,callback) 与 class 版本统一;
    使用回调直接 setS1(2, ()=>{})即可
    imjamespond
        18
    imjamespond  
       2021-02-08 17:40:58 +08:00 via Android
    useeffect 对应的是 componentdidupdate,不是 setstate 的 callback 哦
    @wobuhuicode
    imjamespond
        19
    imjamespond  
       2021-02-08 17:47:06 +08:00 via Android
    @azcvcza 这个实现我知道,但是 callback 中如果要调用其它的 fc 的方法比如 foo,foo 中的打印 data 还是旧的,class 中 callback 调用其它成员 method 就没这个问题
    wobuhuicode
        20
    wobuhuicode  
       2021-02-08 18:07:47 +08:00
    @imjamespond
    如果刚使用 hooks 的话这样对应的话就没有太多的问题,但是随着深入使用的话,这种类比使用就会让你很困惑。
    其实 setState 的 callback 和 componentdidupdate 是等价的。但是由于 class 写法的 state 最终还是一个 big object 。componentdidupdate 无法把 state 分割到你想要的颗粒度。
    要说 useeffect 除了是一个 componentdidupdate 之外,它还是一个更理想的数据监听器。
    zhuzhibin
        21
    zhuzhibin  
       2021-02-08 18:14:20 +08:00
    我想请教一下使用 react-hooks 的优势有哪些?
    imjamespond
        22
    imjamespond  
       2021-02-08 20:02:09 +08:00 via Android
    @wobuhuicode 要说监听 class 可以 shouldupdate 和 didupdate,里面可以根据业务比如大于或小于,而 hooks 要用 ref 保存更新之前的值,反而麻烦,只能说互有利弊,个人认为 hooks 不能完全替代 class
    beginor
        23
    beginor  
       2021-02-08 20:33:59 +08:00 via Android
    最近也才发现 hooks 真象
    beginor
        24
    beginor  
       2021-02-08 20:34:39 +08:00 via Android
    最近也才发现 hooks 真香,有入坑的打算
    @beginor
    danieladu
        25
    danieladu  
       2021-02-08 21:08:30 +08:00 via Android
    必须全面使用,配合 ts,太香了
    duan602728596
        26
    duan602728596  
       2021-02-08 22:01:47 +08:00 via iPhone
    项目全部使用 hook,太香了,太爽了,太舒服了
    JerryCha
        27
    JerryCha  
       2021-02-08 22:30:25 +08:00
    什么?居然还有人写 React 没用 hook ?
    guoliim
        28
    guoliim  
       2021-02-08 22:35:18 +08:00
    already hook
    cleveryun
        29
    cleveryun  
       2021-02-09 12:37:21 +08:00 via Android
    普及度这么高的吗,我们项目框架版本轻易不更改,还没到可以用 hook 的版本
    HariopaNic
        30
    HariopaNic  
    OP
       2021-02-09 13:37:05 +08:00
    @cleveryun 我们也是,所以一直没办法试试新东西。
    SmiteChow
        31
    SmiteChow  
       2021-02-10 10:42:34 +08:00
    使用了一个月了,个人认为已经 Ready for Production 。
    Jtyczc
        32
    Jtyczc  
       2021-02-12 05:11:28 +08:00
    我就想问问

    全面用 hook 了的一定要用上 ts 吗?

    另外,状态管理选哪个? redux ? mobx ?
    HariopaNic
        33
    HariopaNic  
    OP
       2021-02-20 10:19:09 +08:00
    @azcvcza 为啥我在 callback 中打印出来的值还是旧的- -
    azcvcza
        34
    azcvcza  
       2021-02-20 11:31:59 +08:00
    @HariopaNic 我一般这么用只是为了在 setXXX 后一定会做某件事,useState 这东西高度依赖闭包,你取的时候估计拿到的不是最新值。我只能用 useRef 来解决,或者看其他大佬有没有更好的办法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2584 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:04 · PVG 08:04 · LAX 16:04 · JFK 19:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.