useEffect(() => {
getDocuments('CL', 'birthDate, telephone', null)
.then((res) => {
let birthDateMD = res[0].birthDate
let birthDate:any = new Date(birthDateMD)
let dateMDY = `${birthDate.getDate()}/${birthDate.getMonth() + 1}/${birthDate.getFullYear()}`;
setBirthday(dateMDY)
setNumber(res[0].telephone)
})
}, [])
useEffect(() => {
if (validBirthday && telephoneValid && name !== '' && name !== ' ' && lastName !== '' && lastName !== ' ') {
setShow(true)
} else {
setShow(false)
console.log("sad")
}
}, [validBirthday, name, lastName, telephoneValid])
然后,我让所有onChange函数基于e. target. value更新状态。
const handleLastNameChange = (e: any) => {
setLastName(e.target.value);
}
此外,我有一个div,它根据show value有条件地呈现。
<div className={`${handles.saveButtonOne}`} onClick={submitData} style={{display: show === true ? "block" : "none"}}>
最后,这里是输入名称的代码。
<input
className={`${handles.inputOne}`}
type="text"
defaultValue={session?.namespaces?.profile?.firstName?.value}
onChange={handleNameChange}
/>
在第一次渲染时,即使所有的输入都被正确填充(在这种情况下show必须为true),show也被设置为false,我需要在第一次渲染时检查这些值。
例如,如果我删除了名称中的一个单词,显示设置为真,按钮将出现。
任何帮助都将不胜感激。
- 谢谢-谢谢
1条答案
按热度按时间gjmwrych1#
假设使用
useState
宣告name
。尝试使用
value
而不是defaultValue
来输入此字段。如果需要将其初始化为某个默认值,请使用useState first参数。
建议阅读uncontrolled与受控组件。希望这有帮助。