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

2021 年 2 月 8 日
 HariopaNic

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

4064 次点击
所在节点    程序员
34 条回复
llb123
2021 年 2 月 8 日
已经全面用 hook 了
Jirajine
2021 年 2 月 8 日
hook 是 react 的精髓,不用 hook 不如改用 vue 。
duduaba
2021 年 2 月 8 日
全面使用,老代码不动,新功能必须 hooks
bzw875
2021 年 2 月 8 日
入职以来全是 react hook,搞得我类组件都不熟悉。
karott7
2021 年 2 月 8 日
用了 hooks 一年过了,真香,再也不想写类组件了
southlink
2021 年 2 月 8 日
hooks + ts 香的一批
AV1
2021 年 2 月 8 日
我曾经因为 class 嫌弃 react,后来因为 hook 喜欢上 react 。
10bkill1p
2021 年 2 月 8 日
老项目还是 class,新项目一律 hooks
weimo383
2021 年 2 月 8 日
惹,你竟然说惹
weixiangzhe
2021 年 2 月 8 日
hook 加 ts 加一
JQD6r41PkI4o2mEz
2021 年 2 月 8 日
看情况,hooks 要在 fc 里,fc 不能用修饰
zhuweiyou
2021 年 2 月 8 日
全面 hooks
JQD6r41PkI4o2mEz
2021 年 2 月 8 日
fc 的 setstate 没有 callback,不方便
gxm44
2021 年 2 月 8 日
全面 hooks
wobuhuicode
2021 年 2 月 8 日
@imjamespond hook 之后不需要 callback,直接使用 useeffect 就好了
JQD6r41PkI4o2mEz
2021 年 2 月 8 日
@wobuhuicode 要的哦,比如有 a,b 两个按钮都要改某个 state 但实现业务不同,回调不能相同哦
azcvcza
2021 年 2 月 8 日
@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, ()=>{})即可
JQD6r41PkI4o2mEz
2021 年 2 月 8 日
useeffect 对应的是 componentdidupdate,不是 setstate 的 callback 哦
@wobuhuicode
JQD6r41PkI4o2mEz
2021 年 2 月 8 日
@azcvcza 这个实现我知道,但是 callback 中如果要调用其它的 fc 的方法比如 foo,foo 中的打印 data 还是旧的,class 中 callback 调用其它成员 method 就没这个问题
wobuhuicode
2021 年 2 月 8 日
@imjamespond
如果刚使用 hooks 的话这样对应的话就没有太多的问题,但是随着深入使用的话,这种类比使用就会让你很困惑。
其实 setState 的 callback 和 componentdidupdate 是等价的。但是由于 class 写法的 state 最终还是一个 big object 。componentdidupdate 无法把 state 分割到你想要的颗粒度。
要说 useeffect 除了是一个 componentdidupdate 之外,它还是一个更理想的数据监听器。

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

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

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

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

© 2021 V2EX