[英]Handle Select Option in React giving me empty string first time
我對 reactjs 很陌生。 我需要在我的表單中處理 select 選項。 並設置 ne useStae 對應 select 選項並存儲更改事件的選項值。 但問題是,當我第一次使用 select 任何選項時,它會給我一個空字符串。
這是代碼
const [gender,setGender] = useState("")
const genderHandle = (e) =>{
setGender(e.target.value)
console.log(gender)
}
<select onChange={genderHandle}>
<option selected disabled>What is your gender?</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Unknown">Unknown</option>
<option value="Anther Gender">Another Gender</option>
</select>
output ""
難道我做錯了什么?
引用反應文檔:
調用
set
function 不會改變運行代碼中的 state
...狀態的行為就像一個快照。 更新 state 請求使用新的 state 值進行另一個渲染,但不會影響您已經運行的事件處理程序中的計數 JavaScript 變量。
state 將正確設置,唯一的問題是日志記錄部分。 useState()
是異步的,因此console.log()
將在它設置新的 state 之前被觸發。 這就是為什么您總是會看到以前的 state。
您可以通過以下方式查看實際當前的 state:
useEffect(()=>{
console.log(gender)
}, [gender])
我假設您正在引用console.log
的 output 。
它顯示以前的 state 的原因是因為 setState 方法是異步的,這意味着您的 state 在調用console.log
時尚未更新。
有很多不同的方法可以解決這個問題,但是最簡單的可能是將console.log
genderHandle
之外
const [gender,setGender] = useState("");
console.log(gender);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.