You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React的setState函数支持传入哪些类型的参数?

问题解答

你代码里传入setDarkTheme的参数是React状态更新的函数式更新回调,不是提前执行的结果,具体说明如下:

  • useState返回的状态更新函数支持两种入参形式:
    1. 直接传新状态值:就是你之前了解的用法,比如setDarkTheme(false),适合新状态不需要依赖旧状态的场景。
    2. 传回调函数:也就是你代码里的写法,你只需要把函数本身传给更新函数,React内部处理更新逻辑时,会自动调用这个回调,同时把当前最新的旧状态值作为参数传入回调,回调的返回值就是最终要更新的新状态。
  • 你这段代码的执行逻辑是:
    当调用toggleTheme触发更新时,React会先拿到darkTheme的最新值,传给你写的箭头函数作为prevDarkTheme参数,执行箭头函数得到取反后的布尔值,再把darkTheme更新为这个新值。
  • 这种写法的优势:
    当新状态需要基于旧状态计算时,函数式更新能保证拿到的旧状态一定是最新的,避免因为闭包陷阱拿到过期的状态值,导致更新不符合预期。比如你在同一个同步逻辑里多次调用状态更新函数,用函数式更新的写法每次都能拿到上一次更新后的状态值,直接传固定值的话只会生效最后一次。

内容的提问来源于stack exchange,提问作者draca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:15:05