首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在function钩子函数中传递值和传递回调有什么区别?

在function钩子函数中传递值和传递回调有什么区别?
EN

Stack Overflow用户
提问于 2022-01-21 01:34:34
回答 2查看 631关注 0票数 1

假设我使用React useState()声明了一个本地状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [count, setCount] = useState(0);

稍后,我想更新状态并触发重新呈现:

  1. 通过传递值

来设置状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button onClick={() => setCount(count+1)}

  1. 通过传递回调

来设置状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<button onClick={() => setCount((prev_count) => prev_count+1)}

这两种类型的更新有什么区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-21 01:45:57

这里没有任何不同,但一旦应用程序变得更大,并且在许多地方使用了count,就有可能发生多个setState调用,并将数据排队提交给DOM,因此计数的实际值可能不是您所认为的那样。

这正是建议在回调中使用前一个状态的原因。prevState始终是一个可靠的解决方案,无需跟踪每个状态更新以了解count是什么。

票数 1
EN

Stack Overflow用户

发布于 2022-01-21 01:44:24

传递回调的

  1. 将为您提供通过回调函数参数setCount((curr_count) => curr_count+1)访问当前状态的权限。如果您的状态更新是批处理的,使用setCount(count+1)中的状态值将提供陈旧状态,则有可能访问以前的状态。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70799126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文