虚心请教,这样的 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 理解,不知道各位大佬怎么看?

6234 次点击
所在节点    React
51 条回复
westoy
2022-07-09 11:57:28 +08:00
@MrBrother

不是, 我一直用的电脑端, 主楼才支持 MD , 回复一直不行的啊

难道 V 站也搞 abtest.......
DOLLOR
2022-07-09 12:10:17 +08:00
这题目对 react 来说是非常基础的东西,可以说是踏入 react 生态的第一步就要遇到的问题。
okampfer
2022-07-09 15:23:39 +08:00
@gydi @looking0truth #39 是的,我又实验了一下,确实是……一旦注释掉 setCount 那一行,就无法输出最新的 ref.current 值了。
AyaseEri
2022-07-09 16:45:34 +08:00
会被打死,不如考考 React Fiber
vision1900
2022-07-09 21:18:09 +08:00
@AyaseEri 初中级就考 Fiber ,真卷啊
vision1900
2022-07-09 21:18:45 +08:00
可以参考这篇文章: https://beta.reactjs.org/learn/state-as-a-snapshot
React 的 state 不是普通的 JS 变量
zhaomeicheng
2022-07-10 08:38:34 +08:00
@rabbbit 应该只会打印出来一个 0 吧,只执行了一次
MrBrother
2022-07-10 09:08:06 +08:00
@westoy
😂原来如此,我没在电脑上回复过,还以为也可以
vision1900
2022-07-11 00:12:06 +08:00
可以这么写,虽然有点 hack 的感觉:

```
useEffect(() => {
setTimeout(() => {
setCount(val => {
console.log(val)
return val;
})
}, 10 * 1000);
}, [])
```
prayx
2022-07-26 14:15:04 +08:00
合理,考察对 React Hooks 和闭包的理解。
likunyan
2022-09-06 16:31:02 +08:00
主要考的还是 setTimeout

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

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

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

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

© 2021 V2EX