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

2022-07-08 10:55:05 +08:00
 w4ngzhen

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

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

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

6534 次点击
所在节点    React
51 条回复
uen
2022-07-08 11:06:03 +08:00
useEffect 依赖参数传空数组只会组件初始化的时候渲染一次
Leviathann
2022-07-08 11:20:18 +08:00
可以把 考察基本的闭包用法
cyrbuzz
2022-07-08 11:20:33 +08:00
得给 button 加点文字,不然不好点(逃~)。
yuningWang8
2022-07-08 15:12:22 +08:00
useEffect 回调执行的是当前状态的缓存。这个代码不能打印出最新的 count 。
dcsuibian
2022-07-08 15:19:10 +08:00
还行,关键词:React 闭包陷阱
guisheng
2022-07-08 15:40:11 +08:00
我最近在用 发现它死循环
FaiChou
2022-07-08 16:08:50 +08:00
不错的, 可以筛选掉一些只会用 react 的人
vone
2022-07-08 16:12:37 +08:00
@uen 开发环境会重复触发。
zepc007
2022-07-08 16:19:20 +08:00
@guisheng 监听某个 state 的时候再更新这个 state ?
zhuangzhuang1988
2022-07-08 16:23:58 +08:00
太魔法了.
Leviathann
2022-07-08 16:28:21 +08:00
@zhuangzhuang1988 这个就是 hook 的基石,结合 memo 、callback 啥的,搞到后面越写越复杂,所以很多人都很喜欢 solidjs 的设计
ragnaroks
2022-07-08 16:39:36 +08:00
合理
guisheng
2022-07-08 16:41:18 +08:00
@zepc007 是的。
ragnaroks
2022-07-08 16:41:40 +08:00
setTimeout 、依赖列表、useEffect 清理、闭包捕获的变量的值,都是常见可能失误的地方
mameng
2022-07-08 16:51:20 +08:00
结果是 0 , [] 里面为空只有第一次渲染,更新不渲染
gdrk
2022-07-08 17:00:05 +08:00
gdrk
2022-07-08 17:03:48 +08:00
我这 markdown 真的是用的稀烂... [博文]( https://overreacted.io/zh-hans/a-complete-guide-to-useeffect)
w4ngzhen
2022-07-08 17:09:02 +08:00
@gdrk 是的,我主要是看了这篇文章
yuthelloworld
2022-07-08 17:20:24 +08:00
[]里没有监测的变量。所以不会打印吧
westoy
2022-07-08 17:22:13 +08:00
@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