const [persons, setPersons] = useState([
{ name: "", age: "", phoneNumbers: [''] },
]);
如果我们需要添加一个新的人,我们可以使用以下语法…
const addPersonFields = () => {
let person = {
name: "",
age: "",
phoneNumbers: [""],
};
setPersons([...persons, person]);
};
但是如何为索引"i"的人添加新的电话号码让它在反应状态下反应?
假设您知道要更新的人的索引,您可以这样做:
const addPersonPhoneNumber = (index, newNumber) => {
const newState = [persons];
newState[index].phoneNumbers.push(newNumber);
setPersons([...newState]);
}
另一种方法,我们可以通过直接使用setPersons
来添加索引i
的人的电话号码
const addPhoneNumber = (index, phoneNumber) => {
setPersons((prevPersons) => {
prevPersons[index].phoneNumbers.push(phoneNumber);
return [...prevPersons];
});
}
你必须首先找到那个人。下面的解决方案表明您已经有了想要添加电话号码的person对象。
const addPhoneNumber = (newNumber) => {
let index = persons.map((e) => e).indexOf(person);
persons[index].phoneNumbers.push(newNumber);
setPersons([...persons]);
};