因此,我的道具中的items数组在记录时包含项,但是当尝试使用.concat
添加到数组时,它说Cannot read property 'concat' of undefined
export default (props) => {
const { items } = props;
const samples = samplesAsOrderItems();
const allBasketItems = items.concat(samples);
return (
<div className="OrderDetails">
<h4 className="OrderDetails__title">Order summary</h4>
<div className="OrderDetails__content">
<div className="OrderDetails__items">
{items && items.map( (orderItem, index) => {
return (
<OrderItem
key={index}
{...orderItem}
displayType={DisplayType.MINIMAL}
/>
);
})}
</div>
<TotalBreakdown
{...getTotalBreakdownFromOrder(props)}
/>
</div>
</div>
);
function samplesAsOrderItems() {
const sampleItems = get(props, 'samples[0]', undefined);
var orderItems: Mothership.IOrderItem[] = [];
if (sampleItems === undefined) {
return orderItems;
} else {
sampleItems.product.bundleItems.map( (bundleItem, index) => (
bundleItem.siblings.map( (sibling) => (
orderItems.push(bundleToOrderItem(sibling, sampleItems.subTotal.currencyCode))
))
));
return orderItems;
}
}
};
我对打字稿和反应还很陌生,对于为什么会这样真的很挣扎。
答案 0 :(得分:1)
在使用组件的情况下,您不会通过项中的数组。这是item.concat失败的唯一方法,因为道具是不可变的。
使用此组件时,请确保您像<ItemDetails items={[]}/>
在Typescript中,事物的类型对代码在运行时的执行方式没有任何影响,因此“ any”对更改代码的执行方式没有任何作用。