<InputNumber key={index} addonBefore={retrieveIndicatorThresholdSign( indicator.indicator_name, index + 1, )} addonAfter={indicator.threshold_unit[index]} defaultValue={item === null ? undefined : item} onBlur={(e) => handleThresholdBlur(e, index)} formatter={(value) => (/^\d+$/.test(value) ? value : "")} parser={(value) => (/^\d+$/.test(value) ? value : "")} /> 报错 Type '(value: number | undefined) => number | "" | undefined' is not assignable to type '(value: number | undefined, info: { userTyping: boolean; input: string; }) => string'. Type 'number | "" | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'.怎么改
时间: 2024-02-10 19:05:35 浏览: 85
这个报错提示是因为 `formatter` 和 `parser` 函数的类型不匹配,你需要将它们的返回类型改为 `string`。可以按照以下方式修改:
```
<InputNumber
key={index}
addonBefore={retrieveIndicatorThresholdSign(
indicator.indicator_name,
index + 1,
)}
addonAfter={indicator.threshold_unit[index]}
defaultValue={item === null ? undefined : item}
onBlur={(e) => handleThresholdBlur(e, index)}
formatter={(value) => (/^\d+$/.test(value?.toString()) ? value?.toString() : "")}
parser={(value) => (/^\d+$/.test(value?.toString()) ? value?.toString() : "")}
/>
```
在修改后的代码中,我们将 `formatter` 和 `parser` 函数的返回类型都改为了 `string`。并且在处理函数中,我们使用了 `?.` 运算符来处理可能存在的 `undefined` 值。
相关问题
Antdesign中的InputNumber只允许输入数字,否则如果输入其它就显示0。代码如下 <InputNumber key={index} addonBefore={retrieveIndicatorThresholdSign( indicator.indicator_name, index + 1, )} addonAfter={indicator.threshold_unit[index]} defaultValue={item === null ? undefined : item} onBlur={(e) => handleThresholdBlur(e, index)} formatter={(value) => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')} parser={(text) => (/^\d+$/.test(!text) ? text : 0)} />,你能给出代码吗
好的,这是一个使用Ant Design的InputNumber组件,只允许输入数字,否则如果输入其他字符就显示0的示例代码:
```jsx
import { InputNumber } from 'antd';
<InputNumber
defaultValue={0}
formatter={(value) => /^\d+$/.test(value) ? value : '0'}
parser={(value) => /^\d+$/.test(value) ? value : '0'}
/>
```
在这个示例中,我们设置了defaultValue为0,这样当输入不合法时,就会显示0。formatter和parser函数分别用来格式化和解析输入的值。formatter函数用来格式化显示的值,如果输入的值是数字,就原样返回,否则返回0。parser函数用来解析输入的值,同样如果输入的值是数字,就原样返回,否则返回0。这样就可以实现只允许输入数字,否则显示0的效果了。
阅读全文
相关推荐
















