gpt4 book ai didi

javascript - 如何从 e.target.name 更新对象状态

转载 作者:行者123 更新时间:2023-11-29 10:55:33 25 4
gpt4 key购买 nike

我正在尝试从这样的表单中输入数据 -

<h1>Company Position</h1>
<input
name="company.position"
type="text"
onChange={(e) => functions.setData(e)}
value={data.company.position}
/>

进入这样的状态对象 -

const [ form, setValues ] = useState({
name : 'Jo Smith',
email : 'JoSmith@domain.com',
phone : null,
company : {
name : null,
position : null
}
});

在传入目标时使用 handleStateChange 函数

const handleStateChange = (e) => {
e.preventDefault();
setValues({
...form,
[e.target.name]: e.target.value
});
};

我似乎无法更新状态内的公司对象,我假设它会将 company.name 识别为目标名称。

如有任何帮助,我们将不胜感激。

最佳答案

e.target.namecompany.position,你不能设置像 obj["company.position"] 这样的嵌套属性,你必须拆分它:

<input
name="company.position"
type="text"
onChange={e => functions.setData(e)}
value={data.company.position}
/>;

const handleStateChange = e => {
e.preventDefault();
const [section, key] = e.target.name.split(".");

// section is : company
// key is : position

if (key) {
// if you have nested keys to update
setValues({
...form,
[section]: {
...form[section],
[key]: e.target.value
}
});
} else {
// if you're updating on the first level
setValues({
...form,
[section]: e.target.value
});
}
};

关于javascript - 如何从 e.target.name 更新对象状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58270949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com