Javascript 无法将defaultValue作为表达式提供

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是输入的被动原始值,这就是

在下面的React组件中,为什么
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" />
}