reactjs - 在地图功能 React 钩子中更新用户的输入
问题描述
新的反应钩子...我从 API 带来了一些用户数据,我想通过单击提交按钮来更新一个或多个输入。我可以看到用户的最后一个字母发生了变化,但我可以在屏幕上看到新的输入,我无法更改整个单词。而且我不知道它是否应该在整个用户数组中也发生变化,或者一旦我从 API 调用它们就不可能了。谢谢
import { useState } from 'react'
import axios from 'axios'
function UsersComp() {
const [user, setUser] = useState()
const [users, setUsers] = useState([])
const [id, setId] = useState(0)
const getUsers=async ()=>{
let resp = await axios.get("https://jsonplaceholder.typicode.com/users")
setUsers(resp.data);
}
const update = async (e) =>
{
e.preventDefault();
let resp = await axios.put("https://jsonplaceholder.typicode.com/users/" + id, user)
}
return (
<div calssname="App">
<form onSubmit={e => update(e)}>
{
users.map((item) =>
{
return <tbody key={item.id}>
<tr><td>
ID:{item.id} <br/>
Name:<input value={item.name} onChange={e => setUser({...user, name : e.target.value})} type="text" name="name" /> <br/>
Email:<input value={item.email} onChange={e => setUser({...user, email : e.target.value})} type="text" name="email" /> <br/>
<input type="button" value="Add Data"/>
<input type="submit" value="Update"/>
<input type="button" value="Delete"/><br/>
</td></tr>
</tbody>
})
}
</form>
<input type="button" value="Get users" onClick={getUsers} /> <br/>
</div>
);
}
export default UsersComp;
解决方案
您可以onChange
使用以下方式进行更新map
:
onChange={(e) =>
setUser(
users.map((eachUser) =>
item.id === eachUser.id ? { ...eachUser, name: e.target.value } : eachUser,
),
)
}
推荐阅读
- python - 在使用 python、pymysql 和 SSHTunnel 查询期间丢失与 MySQL 服务器的连接
- r - 使用 R 中“mice”库中的“ampute”函数在数据集中生成缺失值
- docker - 如何更新基于 docker 的安装的 soanr.properties
- logic - Is this formalization of the empty set correct in Agda?
- react-native - React 本机 redux-saga 请求仅适用于调试器
- python - 如何通过重复索引拆分数据框并枚举?
- python - 如何在 Python 中基于 groupby 添加一列的值?
- arrays - 将循环值与字符串一起传递
- numpy - 如何在numpy中使列的范围为负?
- r - 使用列作为列索引从 R 中的数据框中提取值