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

React useReducer中reducer函数首个参数_的含义是什么

React useReducer中reducer首个参数_的作用

这个_不是JS或者React的特殊语法,是前端开发圈通用的占位参数命名约定,具体含义和用法如下:

  • 首先useReducer对传入的reducer函数有固定的参数位置要求:第一个参数永远是当前的最新state,第二个参数是dispatch触发时传入的action对象,签名为(currentState, action) => newState。参数的位置是固定的,哪怕逻辑里用不到第一个参数,也必须在形参列表里占住这个位置,否则第二个位置的形参就会错误接收到state值,拿不到预期的action对象。
  • 用_给这个不需要使用的参数命名,是给代码阅读者的明确信号:这个位置的参数是为了满足语法要求保留的,整个reducer逻辑里完全不会读取、使用这个参数的值,不用花精力追踪它的流向。
  • 额外的实用作用:绝大多数JS/TS的lint规则(比如常见的no-unused-vars规则),都会默认把命名为_的参数识别为「有意不使用的占位参数」,不会抛出“定义了变量但未使用”的警告,省掉单独加lint忽略注释的麻烦。

举个这类写法的典型使用场景:如果reducer的更新逻辑完全不依赖之前的state值,每次都直接返回action携带的新值、或者固定的初始值,就会用这个写法:

function reducer(_, { type, payload }) {
  switch (type) {
    case 'UPDATE_CONFIG':
      // 直接返回payload里的全量配置,完全不读取之前的state
      return payload
    case 'RESET_CONFIG':
      return initialState
    default:
      throw new Error(`不支持的action类型:${type}`)
  }
}

注意:_本质就是个普通的合法JS标识符,和你把这个参数命名为unusedState、s没有任何运行时的区别,只是全行业默认的命名约定,可读性更好,也适配lint规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:33:16