reactjs - 如何在反应钩子中设置多个值来状态
问题描述
我的代码片段如下:
<TextInput
type="number"
id="qty"
defaultValue={qty}
onChange={checkValue}
useRef={qty}
/>
const checkValue= (err) => {
err.preventDefault();
setState({[Id]:Number(err.currentTarget.value)});
};
<Button
type="submit"
onClick={onSubmit}
>
Update
</Button>
const onSubmit = err => {
err.preventDefault();
const items = Items.map(p =>({
id:p.id
quantity:state[p.id]?state[p.id]:p.qty
}));
list.updateList(items,id);
};
我必须更新多个产品数量,但是上面的代码只能更改一个产品,如果更改两个产品数量只有第二个产品数量正在更改,如何更改两个产品数量。如果我给只有 p.qty 然后即使我只更改一个产品,两个产品都更新为相同的值。请帮助解决这个问题
解决方案
useState
在钩子中默认设置一个空对象:
import React, {useState} from 'react';
const MyComponent = (props) => {
const [values, setValues] = useState({});
const setSingleValue = (key, value) => setValues({...values, [key]: value});
. . .
return (
. . .
<TextInput onChange={e => setSingleValue('value-name', e.currentTarget.value)} . . . />
. . .
);
}
推荐阅读
- python-3.x - 这个问题使用 lambda 的高阶函数
- null - 空终止符的简单定义
- azure - Azure API 网关基本身份验证
- android - 是否可以在 cordova-plugin-background-mode 中编辑 .java 文件?
- python - 是否有直接在python中获取剩余负数的命令?
- javascript - 具有多种语言条目的 javascript 对象的本地化
- google-app-engine - 如何使用 Google App Engine 上传 multipart/form 文件?
- java - 'getPath()方法'是否替换了java中的'Input/OutputStream?
- node.js - CastError:转换为 ObjectId 失败
- import - 使用 PyPi 创建了第一个包。下载成功但无法导入