[英]Why won't my text input allow me to change the value within it?
我在反應中定義了以下輸入字段:
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 是指 object 中的固定值。 意味着您為輸入提供固定值,而不是可變的 state。 這是創建受控輸入字段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>
)
}
而你 map 它為
{cart.products.map((item) => (
<YourComp initialQuantity={item.amount} />
))}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.