javascript - 如何在 React 中使用 useState Hook 更改/添加数组的某一行的值
问题描述
我有一个以下数组,
const bio = [
{id: 1, name: "Talha", age: 26},
{id: 2, name: "Ayub", age: 22}
]
这是我的完整代码,
import './App.css';
import React, {useState} from 'react';
const bio = [
{id: 1, name: "Talha", age: 26},
{id: 2, name: "Ayub", age: 22}
]
const App = () => {
const [bioData, setbioData] = useState(bio);
const clear_function = () => setbioData([])
return (
<div className="App">
{
bioData.map((arr) =>
<>
<h3 key={arr.id}>Name: {arr.name}, Age: {arr.age}</h3>
<button onClick={() => clear_function()}>Click me</button>
</>
)}
</div>
);
}
export default App;
现在,这段代码将整个数组挂钩到 useState。每当我单击“单击我”按钮时,它会将状态设置为空数组并返回空数组作为结果。
但是如果我想删除数组的特定行怎么办?我做了两个按钮,每个按钮一排。我想要做的是,如果我单击第一个按钮,它也会从数组中删除第一行并保留第二个数组。
同样,如果我想更改特定行的特定属性值,我该如何使用 useState 挂钩呢?例如,我想更改第 2 行的名称属性。怎么可能用 useState 做到这一点?
加法的情况相同。如果我制作一个表格并尝试在我的 bio 数组中添加一个新行,我该怎么做?我在谷歌上搜索了它,也找到了一个类似的帖子,但其中给出的答案并不令人满意,也没有奏效,这就是我再次问这个问题的原因。
解决方案
我不确定我是否完全理解您的问题,但是当您想更改功能组件中的状态时,您不能直接更改状态对象,而是需要创建一个新的所需状态对象,然后设置状态该对象。例如,如果您想向数组添加新行,您将执行以下操作:
setbioData((currBioData) => [...oldBioData, {id: 3, name: "Bla", age: 23}]);
当您想根据当前状态更改状态时,可以选择向setState
函数发送一个接受当前状态的回调函数,然后使用扩展运算符向数组添加一个新行。我不打算讨论为什么最好传递一个函数来修改当前状态,但你可以在React 官方文档setState
中阅读它
推荐阅读
- c# - C# Image.FromFile“正在使用”解决方法?
- ios - 如何从 info.plist 中获取和使用 UIInterfaceOrientation 项目?
- python - 在 Pandas 中添加一个向量/随机数列
- haskell - 我们可以在 fct 的情况下进行模式匹配吗?
- bash - 如何根据日期获取 s3 存储桶中的所有对象?
- java - 无法在频道“null”上发布通知
- excel - 带循环的 Vba sumifs
- linux - Tomcat安装的文件夹访问在Linux上被拒绝
- excel - 在VBA中节省内存,关闭ScreenUpdating后,定期保存并重复和重写现有数据几次
- apache - apache中反向代理背后的目录列表