如何使用 useState 更新数组中对象的值?
How to update value in an object in an array using useState?
我想使用 useState
将 David 和 Brian 的年龄更新为 25 岁,但遇到错误:
TypeError: employees.map is not a function.
谁能建议我该怎么做?
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;
主要问题是您在 setEmployees()
中使用对象 {}
而不是 []
。函数 .map()
只能用于数组。来自文档:
The map()
method creates a new array populated with the results of calling a provided function on every element in the calling array.
如果您想向该数组添加一个新元素,您应该使用 as:
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)
我想使用 useState
将 David 和 Brian 的年龄更新为 25 岁,但遇到错误:
TypeError: employees.map is not a function.
谁能建议我该怎么做?
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;
主要问题是您在 setEmployees()
中使用对象 {}
而不是 []
。函数 .map()
只能用于数组。来自文档:
The
map()
method creates a new array populated with the results of calling a provided function on every element in the calling array.
如果您想向该数组添加一个新元素,您应该使用 as:
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)