在反应挂钩中将元素添加到现有数组

Adding an element to an existing array in react hooks

所以我有这个状态变量:

const [Class, setClass] = useState({ Teacher: "John Fartsalot", Year: 2021, Students: [] });

我有一个:

ver studentObject

我想使用 setClass 动态地将 studentObject 推入 Students 数组。

我遇到了这个 post: 但它似乎只有在只有列表的情况下才有意义。

在我的情况下,正确的做法是什么?

虽然您可以将现有的 Class 扩展到一个新对象中,然后将新的 students 数组也扩展到该新对象中,但最好遵循约定 分离出 状态变量(如 React 推荐的那样),并且不要使用 Class 作为变量名(它非常接近保留字 class)。考虑:

const [teacher, setTeacher] = useState('John Fartsalot');
const [year, setYear] = useState(2021);
const [students, setStudents] = useState([]);

然后添加到学生数组,执行

setStudents([...students, studentObject]);

或者,如果 students 此时恰好处于陈旧的关闭状态,则

setStudents(students => [...students, studentObject]);

这是正确的添加方式:

setStudents(students => [...students, studentObject]);