PrimeReact InputNumber组件选择自动填充值时报错,求解决方案
解决PrimeReact InputNumber自动填充时事件无值的问题
方法1:手动传递原生autocomplete属性
PrimeReact InputNumber底层基于原生input实现,即便组件API未暴露autocomplete配置项,也可通过inputProps直接传递原生属性强制关闭自动填充:
<InputNumber inputProps={{ autocomplete: "off" }} // 其他组件配置项 />
若off在部分浏览器不生效,可使用浏览器通用的强制禁用值:
inputProps={{ autocomplete: "new-password" }}
方法2:监听自动填充事件手动同步值
如果无法关闭自动填充,可监听浏览器原生input事件,直接从DOM节点读取值并同步到组件状态:
import { useRef, useState } from 'react'; import { InputNumber } from 'primereact/inputnumber'; function MyComponent() { const [value, setValue] = useState(null); const inputRef = useRef(null); const handleAutoFill = () => { if (inputRef.current) { const nativeInput = inputRef.current.querySelector('input'); if (nativeInput && nativeInput.value) { setValue(Number(nativeInput.value)); } } }; return ( <InputNumber ref={inputRef} value={value} onChange={(e) => setValue(e.value)} onInput={handleAutoFill} // 其他组件配置项 /> ); }
方法3:表单容器级禁用自动填充
若多个InputNumber组件存在相同问题,可在父级form标签统一设置autocomplete属性:
<form autocomplete="off"> <InputNumber /> <!-- 其他表单组件 --> </form>
内容的提问来源于stack exchange,提问作者Ajith Paul
相关产品推荐
相关产品推荐

