有一个函数可以将状态为Public Function GetBarcodeAddress(datastring As String, serverName As String) as String
GetBarcodeAddress=String.format("http://{0}/barcode/barcode.ashx?data={1}", serverName, datastring)
End Function
的对象product
添加到products
addProductToCart(productId, productName)
{
var product = {
id: productId,
name: productName,
};
this.setState({
products: {
...this.state.products,
[product.id]: product
}
});
}
,但是这些对象按[product.id]排序。如何按照它们添加到购物车的顺序对其进行排序?
答案 0 :(得分:0)
再维护一个数组ids
,您可以在其中添加productId并添加它们:
addProductToCart(productId, productName)
{
var product = {
id: productId,
name: productName,
};
this.setState({
products: {
...this.state.products,
[product.id]: product
},
productIds : [...ids, product.id]
});
}
然后您可以遍历数组以按插入顺序检索产品。
答案 1 :(得分:0)
如果您读取this对象是默认键值对,
您有2个选项可以使用@Easwar解决方案,也可以使用数组来存储。 就我所见,您可以根据需要使用数组结构。
您应该像这样重组状态
constructor() {
super();
this.addProductToCart = this.addProductToCart.bind(this);
this.state = {
products: []
};
}
addProductToCart() {
productsId--;
var product = {
id: productsId,
name: 'test',
};
this.setState({
products: [...this.state.products,product]
});
}
正如我所见,从数组中删除对象时遇到问题,您可以轻松地使用它
removefromCart(value) {
var array = [...this.state.products]; // make a separate copy of the array
var index = array.findIndex(a => a.id === value);
if (index !== -1) {
array.splice(index, 1);
this.setState({ products: array });
}
}