虚心请教,这样的 React 面试题目是否合理?

2022 年 7 月 8 日
 zhenwang

各位真大佬,鄙人最近在面试 React 初 /中级,请问一下这个问题是否合理?

// 按钮挂载后,10 秒点击按钮 N 次,打印的效果?
const [count, setCount] = useState(0)
useEffect(() => { 
    setTimeout(() => {  
      console.log(count);
    }, 10 * 1000 )
 }, []);
<button onClick={() => setCount(count + 1)} />

个人感觉这个问题还是会考察候选人对 React 、React 的 useEffect 理解,不知道各位大佬怎么看?

7661 次点击
所在节点    React
51 条回复
uen
2022 年 7 月 8 日
useEffect 依赖参数传空数组只会组件初始化的时候渲染一次
Leviathann
2022 年 7 月 8 日
可以把 考察基本的闭包用法
cyrbuzz
2022 年 7 月 8 日
得给 button 加点文字,不然不好点(逃~)。
yuningWang8
2022 年 7 月 8 日
useEffect 回调执行的是当前状态的缓存。这个代码不能打印出最新的 count 。
dcsuibian
2022 年 7 月 8 日
还行,关键词:React 闭包陷阱
guisheng
2022 年 7 月 8 日
我最近在用 发现它死循环
ethusdt
2022 年 7 月 8 日
不错的, 可以筛选掉一些只会用 react 的人
vone
2022 年 7 月 8 日
@uen 开发环境会重复触发。
zepc007
2022 年 7 月 8 日
@guisheng 监听某个 state 的时候再更新这个 state ?
zhuangzhuang1988
2022 年 7 月 8 日
太魔法了.
Leviathann
2022 年 7 月 8 日
@zhuangzhuang1988 这个就是 hook 的基石,结合 memo 、callback 啥的,搞到后面越写越复杂,所以很多人都很喜欢 solidjs 的设计
ragnaroks
2022 年 7 月 8 日
合理
guisheng
2022 年 7 月 8 日
@zepc007 是的。
ragnaroks
2022 年 7 月 8 日
setTimeout 、依赖列表、useEffect 清理、闭包捕获的变量的值,都是常见可能失误的地方
mameng
2022 年 7 月 8 日
结果是 0 , [] 里面为空只有第一次渲染,更新不渲染
gdrk
2022 年 7 月 8 日
gdrk
2022 年 7 月 8 日
我这 markdown 真的是用的稀烂... [博文]( https://overreacted.io/zh-hans/a-complete-guide-to-useeffect)
zhenwang
2022 年 7 月 8 日
@gdrk 是的,我主要是看了这篇文章
yuthelloworld
2022 年 7 月 8 日
[]里没有监测的变量。所以不会打印吧
westoy
2022 年 7 月 8 日
@gdrk v 站回复不支持 markdown.......

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

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

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

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

© 2021 V2EX