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
相关产品推荐
相关产品推荐

