【发布时间】:2020-08-17 09:54:36
【问题描述】:
在我正在构建的食品卡车应用程序中,我有一个订单卡组件。在该订单卡组件上,它显示了用户订单中的所有商品以及每个商品的数量。在显示每个项目的计数的位置,我想更改它以呈现选择输入,其中选择的默认值将是用户已经选择的任何计数。然后我希望用户能够使用选择输入来更改计数。
我要更改为选择输入的是顺序中每个项目左侧的计数。例如,此订单中的第一项是鸡肉炸玉米饼。计数为 2。我希望将其中的选择输入动态设置为 2,但如果用户愿意,则可以按顺序增加或减少鸡肉玉米卷的数量。
这是组件中的代码:
const OrderCard = props => {
const orderCount = props.order.reduce(function(prev, cur) {
return prev + cur.count;
}, 0);
return (
<Card className="order-card-main">
<i class="far fa-times-circle" style={{ position: 'relative', left: '0px', textAlign: 'left', width: '100%', marginTop: '3%', fontSize: '1.5rem' }} onClick={() => props.closeOrderCard()}></i>
<h1 className="order-card-title">Your Order</h1>
<p className="order-card-truck">from <span className="truck-name">{props.selectedTruck.name}</span></p>
<div className="order-items-cont">
{props.order.map(item => (
<div className="order-item-div">
<p className="order-item-count">{item.count}</p>
<p className="order-item-name">{item.item}</p>
<p className="order-item-total">{CurrencyFormatter.format(item.total, { currency: 'USD' })}</p>
<hr />
</div>
))}
</div>
<input className="order-note-input" type="text" placeholder="Note to truck..." />
<button className="pay-button">
<p className="total-items-count">{orderCount}</p>
<p>Next step: pay</p>
<p>{
CurrencyFormatter.format(props.order.reduce(function(prev, cur) {
return prev + cur.total;
}, 0), { currency: 'USD' })
}</p>
</button>
</Card>
)
}
const mapStateToProps = state => {
return {
selectedTruck: state.selectedTruck,
order: state.order
}
}
export default connect(mapStateToProps, { closeOrderCard })(OrderCard);
通过谷歌搜索很难找到这方面的例子。如果您需要更多上下文/信息,请告诉我,并提前感谢您的帮助。
更新:
对于那些询问为什么选择而不是常规输入的人,我只是从 Uber Eats 上复制这个设计。我可能会使用建议的想法,但我仍然想知道如何使用选择输入来做到这一点。这是来自 Uber Eats 的订单组件的屏幕截图:
【问题讨论】:
-
我不明白这里使用 select 而不是简单的输入,但是您仍然可以将 item.count 放入并输入,并触发在 'onChange 上编辑您的状态的方法' 事件。
-
同意@QuentinGrisel,带有 type="number" 的输入将提供用户可以输入的数字输入,同时还提供内置的原生增加/减少按钮. 保存需要填充选择的选项。
-
@QuentinGrisel 我更新了我的帖子以回应您的建议...
标签: javascript reactjs select input