【问题标题】:shopping cart array not rendering properly, react.js购物车数组未正确呈现,react.js
【发布时间】:2019-12-10 16:15:13
【问题描述】:

在获取后,如果我点击某个卡片,我可以填充一个空数组。 我想将它作为道具传递给子组件,我想我的做法是正确的,当我试图在子组件中对其进行控制台记录时会出现问题,因为我看不到任何错误,并且 console.log 是不打印任何东西


let shoppingCart = [];

const fetchProducts = async () => {
const data = await fetch(
  "blablablablablab"
);
const products = await data.json();
setProducts(products);
console.log(products);
};


const handleShoppingCart = product => {
  shoppingCart.push(product);
  console.log(shoppingCart);
  return shoppingCart;
};

在返回函数中,我尝试检查数组是否不为空、是否未定义或是否不为空但结果相同

{shoppingCart.length !== 0 ? (
    <ShoppingCart parkingSlots={shoppingCart} />
  ) : null}

子组件

const ShoppingCart = ({ parkingSlots }) => {
  console.log(parkingSlots);
  const parkingSlotsComponent = parkingSlots.map((parkingSlot, i) => {
  // const { name } = parkingSlot;
  return (
    <div className="parking_details" key={i}>
      {parkingSlot.name}
    </div>
  );
});
return <div className="checkout">{parkingSlotsComponent}</div>;
 }; 

【问题讨论】:

    标签: javascript arrays reactjs fetch


    【解决方案1】:

    数据在props

    当数据通过props传递给子组件时,它是props子组件的一部分。试试下面,看看你是否可以控制台记录数据。

    const ShoppingCart = props => {
      console.log(props.parkingSlots);
      const parkingSlotsComponent = props.parkingSlots.map((parkingSlot, i) => {
      // const { name } = parkingSlot;
      return (
        <div className="parking_details" key={i}>
          {props.parkingSlot.name}
        </div>
      );
    });
    return <div className="checkout">{parkingSlotsComponent}</div>;
     };
    

    【讨论】:

    • 什么都没有,但又没有错误,所以如果对三元运算符进行一些检查,以便在某些情况下返回带有道具的子组件,它将首先返回子空数组,然后是获取的数组父母的,我无法打印出来但如何避免这种情况是有道理的?
    • shoppingCart.length !== 0 首先shoppingCart 有数据吗?
    • 不,我首先将其初始化为空数组,然后单击单张卡后将项目推入其中,我可以看到它正在由 console.log 填充,然后尝试将其传递给子组件跨度>
    猜你喜欢
    • 2021-12-18
    • 2021-11-03
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多