ReactJS:「元件正在更改要控制的文字類型的不受控制的輸入」錯誤
ReactJS 要求在處理不受控制的情況時保持一致性和受控輸入元素。如警告所示,在組件的生命週期中,輸入欄位不應在這兩種狀態之間振盪。
理解問題
在提供的程式碼中,問題源自於狀態初始化,其中欄位最初定義為空對象,即欄位:{}。此設定在初始渲染時將輸入元素指定為不受控輸入。
但是,當將值輸入到輸入欄位時,狀態的欄位物件會更新,導致切換到受控輸入行為。不允許這種從不控製到受控制的轉換,從而導致警告。
可能的解決方案
解決方案1:使用空字串初始化欄位
更正狀態初始化以在名稱欄位包含空字串,確保從一開始就控制輸入:
<code class="javascript">this.state = { fields: { name: '', }, errors: {}, };</code>
解決方案2:實施短路評估
不要只依賴狀態,如果狀態值未定義,則使用短路評估將輸入值設為空字串:
<code class="javascript">value={this.state.fields.name || ''}</code>
這可以確保即使初始狀態值未定義,輸入欄位仍保持受控。
透過實施這些建議,警告將得到解決,確保輸入的處理一致並符合 ReactJS 的期望。
以上是**如何修復 ReactJS 中的「元件正在更改要控制的文字類型的不受控制的輸入」錯誤? **的詳細內容。更多資訊請關注PHP中文網其他相關文章!