Javascript 无法将defaultValue作为表达式提供
在下面的React组件中,为什么Javascript 无法将defaultValue作为表达式提供,javascript,reactjs,Javascript,Reactjs,在下面的React组件中,为什么defaultValue={time}会工作,而defaultValue={time/2}不会工作(将显示空输入) 请注意,我希望保留useffect挂钩,并且不将defaultValue更改为value 请在以下沙箱中尝试: const输入=()=>{ const[time,setTime]=React.useState() React.useffect(()=>setTime(1000),[])) 返回 } defaultValue是输入的被动原始值,这就是
defaultValue={time}
会工作,而defaultValue={time/2}
不会工作(将显示空输入)
请注意,我希望保留useffect
挂钩,并且不将defaultValue
更改为value
请在以下沙箱中尝试:
const输入=()=>{
const[time,setTime]=React.useState()
React.useffect(()=>setTime(1000),[]))
返回
}
defaultValue是输入的被动原始值,这就是为什么不能在属性内部动态更改它,而value属性被视为可以更改的动态值。
如果要动态设置defaultValue,则必须在呈现组件之前在useEffect函数中进行设置
const输入=()=>{
const[time,setTime]=React.useState()
React.useffect(()=>设置时间(1000/2),[])
返回
}
如果检查控制台,则会出现一个错误:“已收到defaultValue
属性的NaN”。它不会抛出一个错误,因为初始值是未定义的
。但是对于未定义/2
,它是NaN。您可以设置如下初始值:React.useState(0)
const Input = () => {
const [time, setTime] = React.useState()
React.useEffect(() => setTime(1000), [])
return <input defaultValue={time / 2} type="number" />
}