reactjs - 为什么我的文本输入不允许我更改其中的值?
问题描述
我在反应中定义了以下输入字段:
const [products, setProducts] = useState(cart.products);
<div>
{products.map((item) => (
<input
className="form-control-sm text-center mb-2"
type="number"
value={item.quantity}
onChange={() => handleChange(event.target)}
name="quantity"
/>
))}
</div>
即使未将 item.quantity 指定为只读字段,我也无法在浏览器中更改它的值。
数据:
cart
{_id: "5f15ee2c0b94bf240470d70d", user: "5f15ee2c0b94bf240470d70c",
products: Array(3), __v: 0}
products: Array(3)
0:
product:
brand: "Apple"
category: []
color: "Silver"
images: ["latest-prduct-1.jpg"]
list_price: 220
name: "lorem ippsum dolor"
price: 120
rating: "5"
size: "Medium"
_id: "5f1864667c213e0f5779ee40"
__proto__: Object
quantity: 8
_id: "5f1f04267e422c266c5c1d42"
解决方案
item.quantity 是指对象中的固定值。意味着您为输入提供固定值而不是可变状态。这是创建受控输入字段的反应方式 https://reactjs.org/docs/forms.html
在钩子中,就像
const YourComp = ({initialQuantity}) => {
const [quantity, setQuantity] = useState(initialQuantity)
return (
<div>
<input
className="form-control-sm text-center mb-2"
type="number"
value={quantity}
onChange={ e => setQuantity(e.target.value)}
name="quantity"
/>
</div>
)
}
你把它映射为
{cart.products.map((item) => (
<YourComp initialQuantity={item.amount} />
))}
推荐阅读
- python - 如何将方程添加到 Python 上的线性回归线?
- python - Python - Pandas 模块 - 过滤器显示为字符串而不是布尔值
- html - 无法使用烧瓶在 html 中显示来自 webhook 的数据
- javascript - JQuery - 转换文本和空格
- c# - .net web api插入多个相同的数据
- python - 在 Plotly Express 的 px.scatter_3d() 中表示聚类中心
- opengl - GtkGLArea 的深度问题
- python - 在 pymongo 中使用 .aggregate 复制集合时如何正确使用“$out”运算符?
- python - 带有 Amazon SageMaker 的语义内容推荐系统,存储在 S3 中
- awk - 为什么 awk 无法对小数点进行操作?