【发布时间】:2018-11-15 07:21:01
【问题描述】:
我正在构建一个购物车应用程序,但遇到了一个问题,即我的所有输入都具有相同的状态值。一切正常,但是当我在一个输入框中输入时,所有其他输入都是一样的。
我尝试在输入中添加一个名称字段并将我的初始状态设置为未定义,这工作正常,但数字不通过。
当输入具有相同的状态值时,我们如何处理不同的输入?或者这是不可能/愚蠢的吗?
class App extends Component {
state = {
items: {
1: {
id: 1, name: 'Yeezys', price: 300, remaining: 5
},
2: {
id: 2, name: 'Github Sweater', price: 50, remaining: 5
},
3: {
id: 3, name: 'Protein Powder', price: 30, remaining: 5
}
},
itemQuantity: 0
},
render() {
return (
<div>
<h1>Shopping Area</h1>
{Object.values(items).map(item => (
<div key={item.id}>
<h2>{item.name}</h2>
<h2>$ {item.price}</h2>
{item.remaining === 0 ? (
<p style={{ 'color': 'red' }}>Sold Out</p>
) : (
<div>
<p>Remaining: {item.remaining}</p>
<input
type="number"
value={ itemQuantity }
onChange={e => this.setState({ itemQuantity: e.target.value})}
placeholder="quantity"
min={1}
max={5}
/>
<button onClick={() => this.addItem(item)}>Add To Cart</button>
</div>
)}
</div>
))}
</div>
)
}
}
【问题讨论】:
-
您在多个项目中使用相同的状态并想知道......他们有相同的状态?
-
@JonasW 我知道它们具有相同的价值,但我想知道是否有办法使它们独一无二。如果我有 10000 个项目,我不会为每个项目提供 10000 个输入
-
@ionizer 不错的解决方案。我会试试的。 :)
-
或者,您可以在这些项目中插入一个新属性来跟踪数量并动态设置它,就像我对答案所做的那样。
标签: javascript reactjs