数组上使用.concat时道具说不明

时间:2019-02-25 19:40:02

标签: reactjs typescript

因此,我的道具中的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;
    }
  }
};

我对打字稿和反应还很陌生,对于为什么会这样真的很挣扎。

1 个答案:

答案 0 :(得分:1)

在使用组件的情况下,您不会通过项中的数组。这是item.concat失败的唯一方法,因为道具是不可变的。

使用此组件时,请确保您像<ItemDetails items={[]}/>

那样调用它

在Typescript中,事物的类型对代码在运行时的执行方式没有任何影响,因此“ any”对更改代码的执行方式没有任何作用。