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

React-Select结合Formik出现S6544 TypeScript警告如何解决?

解决React-Select结合Formik时的TypeScript S6544警告

问题原因

formik.setFieldValue 是一个异步函数,调用后会返回 Promise,但React-Select的onChange属性要求传入的回调函数返回值为void(即无返回值)。你之前的箭头函数采用简写形式(无大括号),相当于直接返回了setFieldValue的Promise结果,这违反了TypeScript的类型约束,触发了S6544警告。

优化方案

以下几种方法都可以消除警告,按需选择:

方案1:添加函数体大括号,不返回任何值

最直观的方式是给箭头函数加上大括号,让函数内部执行调用但不返回结果,默认返回undefined(符合void要求):

<Select 
  options={publisherOptions} 
  onChange={selectedOption => {
    formik.setFieldValue("publisherId", selectedOption?.value);
  }} 
/>

方案2:使用void关键字忽略Promise返回值

如果想保持箭头函数的简写形式,可以用void关键字明确丢弃setFieldValue返回的Promise,让函数返回void:

<Select 
  options={publisherOptions} 
  onChange={selectedOption => void formik.setFieldValue("publisherId", selectedOption?.value)} 
/>

方案3:用异步函数包裹(适合需要额外异步逻辑的场景)

如果后续需要在setFieldValue执行后添加其他异步操作,可以用async函数包裹,无需显式返回任何值:

<Select 
  options={publisherOptions} 
  onChange={async (selectedOption) => {
    await formik.setFieldValue("publisherId", selectedOption?.value);
    // 可在此添加其他异步处理逻辑
  }} 
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:04:55