簡體   English   中英

如何使用 useEffect 掛鈎中設置的另一個 state 的值設置 useState 的初始值?

[英]How to set the initial value of useState with the value of another state set in a useEffect hook?

這個問題聽起來很復雜,但我想做的是

  1. 我在 useEffect 掛鈎中從 firestore 獲取用戶數據,然后將數據放入 state 中。 這部分工作正常。
const [profile, setProfile] = useState("")

useEffect(() => {
// Get user profile data from firestore.. 
    setProfile(userData) 
}, [])
  1. 我有 html 無線電輸入,用戶可以在其中更改性別,但我需要使用 state 設置初始性別(他們在注冊期間選擇的性別)
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>

問題是,使用此代碼, console.log(gender)返回undefined ,我無法檢查(選擇)不同的性別,因為它卡在 Man 上。

請指教

似乎您只需要使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM