簡體   English   中英

組件正在將文本類型的受控輸入更改為不受控制 - ReactJS

[英]A component is changing a controlled input of type text to be uncontrolled - ReactJS

我有一個頁面,我從服務器獲取數據並為受控輸入設置狀態值。 (例如,我的輸入具有this.state.name值,我從服務器獲取名稱,例如 Dave 並將其設置為名稱,因此輸入的值是 Dave。它可以工作,但我遇到了對象數組的問題

所以這就是狀態

this.state = {
        ingredients: [{ ingredient: "", quantity: '' }],
        //other properties
   }

這就是我使用ingredients

{this.state.ingredients.map(({ ingredient, quantity }, index) => (


   <div key={index}>
        ingredient: <input value={ingredient} className="ingredientClass" type="text" autoComplete="off" placeholder="e.g: pepper" onChange={{e => this.update(index, "ingredient", e.target.value)} />
        quantity: <input value={quantity} autoComplete="off" type="text" placeholder="e.g: 1g" onChange={e => this.update(index, "quantity", e.target.value)} />
        <button onClick={this.BtnClick}>delete</button> <br />
       {this.state.errorFor === 'ingredientsfield' ? this.state.errmsg : null}
   </div>
))}

但這會導致此錯誤:

警告:組件正在將文本類型的受控輸入更改為不受控制。 輸入元素不應從受控切換到不受控制(反之亦然)。 決定在組件的生命周期內使用受控或非受控輸入元素。 更多信息: link

為什么會這樣? 我該如何解決?

PS:我檢查並成功從服務器獲取成分

更新:onChange 事件的代碼

update(index, key, value) {
    this.setState(({ ingredients }) => ({ ingredients: ingredients.map((ing, i) => i === index ? { ...ing, [key]: value } : ing) }));
    console.log(this.state.ingredients)
}

問題是輸入之一在某個時刻具有未定義或空值。

我無法理解是什么將您的輸入值從您顯示的代碼更改為 null(未定義)。 但是您可以使用 ReactDevTools 在應用程序運行期間觀察輸入的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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