[英]How to set the initial value of useState with the value of another state set in a useEffect hook?
This question sounds complicated but what I am trying to do is这个问题听起来很复杂,但我想做的是
const [profile, setProfile] = useState("")
useEffect(() => {
// Get user profile data from firestore..
setProfile(userData)
}, [])
const defaultGender = profile.gender
const [gender, setGender] = useState(defaultGender)
<input onChange={e => setGender(e.target.value)} type="radio" id="Man" name="gender" value="Man" checked={defaultGender === "Man"} /> <label htmlFor="Man">Man</label>
<input onChange={e => setGender(e.target.value)} type="radio" id="Woman" name="gender" value="Woman" checked={defaultGender === "Woman"} />
<label htmlFor="Woman">Woman</label>
The problem is, with this code, console.log(gender)
returns undefined
and I can not check (select) a different gender as it is stuck on Man.问题是,使用此代码,
console.log(gender)
返回undefined
,我无法检查(选择)不同的性别,因为它卡在 Man 上。
Please advice请指教
Seems like you just need to use gender
from the state (not defaultGender
) for the checked
input's prop:似乎您只需要使用 state 中的
gender
(不是defaultGender
)作为checked
输入的道具:
const [gender, setGender] = useState(profile.gender)
<input onChange={e=> setGender(e.target.value)} type="radio" id="Man" name="gender" value="Man" checked={gender === "Man"} />
<label htmlFor="Man">Man</label>
<input onChange={e=> setGender(e.target.value)} type="radio" id="Woman" name="gender" value="Woman" checked={gender === "Woman"} />
<label htmlFor="Woman">Woman</label>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.