我的反應有問題。使用表單,我創建了更多受控制的輸入。我創建了一個在表單更改時運行的函式。但更新了一個狀態。但是 reacte 給了我一個錯誤。
VM2529 react_devtools_backend.js:4026 Warning: A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component.
處理改變函式:
let DefaultValue = {
firsName: '',
lastname: '',
email: '',
message: ''
}
const [output, setOutput] = useState(DefaultValue)
const handleChange = (e) => {
setOutput({ [e.target.name]: e.target.value });
}
謝謝您的回復。
uj5u.com熱心網友回復:
setOutput({ [e.target.name]: e.target.value });
這不會與舊狀態合并,它將替換舊狀態。因此,如果它們發生變化lastName,則新狀態將為{ lastName: "some string" },并且所有其他值都將是未定義的。
相反,您需要從舊狀態復制所有其他值:
setOutput(prev => ({
...prev,
[e.target.name]: e.target.value
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/475025.html
上一篇:不適用于React的JSX條件
