我想使用useState
将David和Brian的年龄更新为25岁,但遇到错误:
TypeError:employees.map不是函数。
谁能建议我该怎么办?
import React, { useState, useEffect } from 'react';
function App() {
const [employees, setEmployees] = useState([]);
useEffect(() => {
setEmployees([
{ name: 'David', age: 40 },
{ name: 'Brian', age: 35 }
]);
}, []);
employees.map((value) => {
setEmployees({ ...employees, age: 25 });
});
console.log(employees)
return (
<div>
This is App component
</div>
);
};
export default App;
答案 0 :(得分:1)
主要问题是您在setEmployees()
中使用对象{}
而不是[]
。函数.map()
仅可用于数组。从文档中:
map()
方法创建一个新数组,其中填充了在调用数组中每个元素上调用提供的函数的结果。
如果要向该数组添加新元素,应将其用作:
setEmployees(prevState => [
...prevState,
{ name: 'New Guy', age: 25 }
]);
要更新所有值,可以使用.map()
如下:
setEmployees(prevState => prevState.map(e => ({
...e,
age: 25
});
查看下面的实时示例:
const data = [
{ name: 'David', age: 40 },
{ name: 'Brian', age: 35 }
]
const result = data.map(e => ({...e, age: 10}))
console.log(result)