reactjs - 保持一切同步
问题描述
我有一个来自数据库的用户列表
const [users, setUsers] = useState([]);
database.getUsers.then(users => setUsers(users))
我将其打印在一个简单的列表中,当我单击每个列表时,我会呈现一个表单以更新名称
const [user, setUser] = useState({});
database.getUser(userId).then(user => setUser(user))
useEffect(() => {
// I need to implement debounce or something like that here. any suggestions are welcome;)
database.saveUser(userId, user).then(user => console.log(user.name + 'saved!'))
}, [user])
<input value={ user.name } onChange={(e) => setUser({...user, name: e.target.value})} />
我的问题是:如何让用户更新我刚刚在一个特定用户中更新的名称?
解决方案
对于您的问题,最好编写如下代码:
const [user, setUser] = useState({});
useEffect(() => {
fetchUserInfo()
}, [])
const fetchUserInfo = () => {
database.getUser(userId).then(user => setUser(user))
}
const changeHandler = e => {
setUser({...user, name: e.target.value});
database.saveUser(userId, user).then(user => console.log(user.name + 'saved!'))
}
<input value={ user.name } onChange={changeHandler}/>
这样,当您输入用户名时,您的数据库将与您的表单同步。
推荐阅读
- android - why can't i run my app? why is it showing the message below?
- mongodb - MogoDB aggregate with $count and $lookup expected performance
- artillery - 炮兵:ramto 在炮兵中究竟是如何工作的?
- hive - 为什么从 Presto 中的 dtap:// hive 表读取时总是得到 0 条记录作为输出?
- api - Symfony 4 - API 管理多个文件上传(无捆绑)
- spring - 字段 restTemplate 需要一个 bean,但找到了 2 个
- c# - 从 Django App 重定向到 Asp.Net 网页
- function - .bat 文件中未调用函数
- python - 有没有办法在 PyCharm 控制台中查看参数信息?
- ios - 将 UIView 添加到 UITableViewCell 没有显示任何内容