MUI Autocomplete的onInputChange如何移除未使用的event、reason参数
MUI Autocomplete onInputChange未使用参数报TS(6133)错误解决方案
使用MUI Autocomplete组件的onInputChange事件回调时,若仅使用入参中的value,未使用的event、reason参数会被TypeScript、ESLint标记为灰显,抛出参数已声明但未读取的错误,可通过以下方法解决:
- 下划线标记有意未使用的参数
TypeScript和ESLint默认规则会自动识别以下划线_开头的参数为开发者有意保留、不需要使用的参数,不会触发未使用报错。注意JS回调参数是按位置传递的,不能直接跳过前置的event参数直接声明value,否则value变量实际接收到的是event对象,会导致逻辑异常。
修正后的代码示例:
onInputChange={async ( _event: object, value: string, _reason: string, ) => { setProcedureCodeLength(value.length); if (value.length >= 3) { const codes = await getProcedureCodes( value, undefined, ); setProcedureCodeOptions(codes); } else { setProcedureCodeOptions([]); } }}
如果完全用不到reason参数,可以直接省略第三个参数的声明,不需要强行声明所有入参,代码可以进一步简化:
onInputChange={async (_event: object, value: string) => { setProcedureCodeLength(value.length); if (value.length >= 3) { const codes = await getProcedureCodes(value, undefined); setProcedureCodeOptions(codes); } else { setProcedureCodeOptions([]); } }}
- 调整全局校验规则(非必要不推荐)
可以通过修改ESLintno-unused-vars规则、TypeScriptnoUnusedParameters配置,关闭未使用参数的报错提示。但该配置会全局生效,容易漏掉业务代码中其他真正冗余的参数声明,不建议使用。
开发提示:不需要手动为onInputChange的回调参数手写类型,直接使用MUI自带的类型推导即可自动匹配正确的参数类型,减少冗余的类型声明代码。
内容的提问来源于stack exchange,提问作者mattsmith5
相关产品推荐
相关产品推荐

