如果在渲染之后,您開始在輸入中輸入文本,那么一切正常,但是在單擊“填充”按鈕并自動填充欄位后,將無法再更改它們的值
請告訴我錯誤在哪里
import React, {useState} from "react";
const Test = () => {
const [item, setItem] = useState({});
const updateItem = (e) => {
item[e.target.id] = e.target.value;
setItem(item);
}
const aaa = () => {
let item = {
link : 'testlink',
title : 'testtitle',
desc : 'testdesc'
}
setItem(item);
}
return (
<form>
<input type="text" name="link" id="link" value={item.link} onChange={updateItem} />
<br/><br/>
<input type="text" name="title" id="title" value={item.title} onChange={updateItem} />
<br/><br/>
<textarea name="desc" id="desc" value={item.desc} onChange={updateItem} />
<input type="button" value="click" onClick={aaa} />
</form>
);
}
export default Test;
uj5u.com熱心網友回復:
我在您的代碼中發現了一些問題,通過修復我認為您的問題將得到解決:
首先,你不能直接給狀態賦值,所以改變這部分:
const updateItem = (e) => {
item[e.target.id] = e.target.value;
setItem(item);
}
這部分:
const updateItem = (e) => {
setItem({...item,[e.target.id]:e.target.value});
}
其次,aaa 函式中作用域的名稱與狀態相同,這可能會導致錯誤,因此更改它的名稱或直接賦值,如下所示:
const aaa = () => {
setItem({
link : 'testlink',
title : 'testtitle',
desc : 'testdesc'
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/537121.html
標籤:反应反应本机
下一篇:如何處理這些錯誤ERRORTypeError:Notifications.addListenerisnotafunction。(在'Notifications.addListener
