亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編輯 TextField 值,該值已預先定義

如何編輯 TextField 值,該值已預先定義

泛舟湖上清波郎朗 2022-12-22 10:02:18
我有一個表格,其中包含來自某個國家/地區的一些數據。默認情況下,數據是只讀的,如果用戶想要更改值,請單擊編輯按鈕。問題是我無法編輯 中的值TextInput,默認情況下,該值value已經預先定義。我嘗試通過 編輯該值onChange(),但它不起作用。我鍵入的所有內容都沒有出現在輸入字段中。這是我的代碼,我放在 CodeSandBox 中:https ://codesandbox.io/s/polished-water-muq69?file=/src/App.js我在用著TextField來自react-material.有人可以幫我更新那個值嗎?先感謝您。
查看完整描述

4 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

正如其他人所說,問題是您需要onChange并value指向狀態中的相同值/變量。


更進一步,我將清除狀態中的所有這些變量并僅使用一種方法來更改屬性(例如,如果您有很多字段并且代碼足夠長)


  const changeField = (name, value) => {

    let newCountryInfo = [...countryInfo];

    newCountryInfo[0].data.Country[0][name] = value;

    setCountry(newCountryInfo);

  };

并且在每個TextField你添加的東西取決于領域如下


  onChange={event => {

    changeField("name", event.target.value);

  }}

檢查此代碼和框鏈接


查看完整回答
反對 回復 2022-12-22
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

問題在這里:


value={item.data.Country[0].name}

您在屬性中設置的任何內容都value將保留在其中。因此,不是在此處傳遞您的 API 響應,而是在其中傳遞一個狀態值,并根據輸入值的變化更新該狀態(2 種方式數據綁定)。它將解決問題。


您必須做出的改變:


const [countryName, setCountryName] = useState("");


onChange={event => {

  setCountryName(event.target.value);  // This will update the state

}}

value={countryName}  // updated state value is used here


查看完整回答
反對 回復 2022-12-22
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

使用 State 屬性作為值


const [國家名稱, setCountryName] = useState("");


<TextField

className={classes.field}

disabled={disabledField}

label="Name"


value={countryName}


onChange={event => {

  setCountryName(event.target.value);

}}

variant="outlined"

InputLabelProps={{

  shrink: true

}}

/>

在useState("")內部,定義初始值或預定義值。


查看完整回答
反對 回復 2022-12-22
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

我不是 React 專家,但似乎 React 組件正在覆蓋所有正在輸入的更改。您可以在開發控制臺上看到它,只需刪除 value="brazil" 并嘗試輸入內容,value="brazil" 將彈出回到輸入標簽。我可以建議用占位符替換值。這樣,用戶仍會看到舊值,并且能夠鍵入新值。



查看完整回答
反對 回復 2022-12-22
  • 4 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號