javascript - 如何解决类型错误: Cannot read property 'filter' of undefined

标签 javascript html reactjs redux

当我在 VSC 上编译时,我没有收到此错误,但当我在浏览器中加载页面时,我看到的是:

类型错误:无法读取未定义的属性“过滤器”

和:

  10 |   product={product}
  11 |   addToCart={props.addToCart}
  12 |   removeFromCart={props.removeFromCart}
> 13 |   cartItem={
     | ^  
  14 |     props.cart.filter(cartItem => cartItem.id === product.id)[0]
  15 |   }
  16 | />

完整功能如下:

function ProductListing(props) {
  return (
    <div className="product-listing">
      {props.products.map(product => (
        <ProductListItem
          product={product}
          addToCart={props.addToCart}
          removeFromCart={props.removeFromCart}
          cartItem={
            props.cart.filter(cartItem => cartItem.id === product.id)[0]
          }
        />
      ))}
    </div>
  );
}

最佳答案

确保在父级中有条件地渲染子级,以便仅在 props.cart 准备就绪时才渲染它。

export class ParentContainer extends Component {

    constructor(){
      super()
      this.state  = {
        cart: []
        isLoading: true
      }
    }

    componentWillMount(){
      // fetch('/some/endpoint')
      // massage your data and then push it to state
      .then(card => {
        this.setState({cart, isLoading: false})
      })
    }

    render() {
      return (
        <Fragment>
          {this.state.isLoading ? ( // evalutate if Data is ready to be passed
            <Fragment />
            ) : (
              <CartInformation cart={this.state.cart} />
            )
          }
        </Fragment>
      )
    }
  }

关于javascript - 如何解决类型错误: Cannot read property 'filter' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53872245/

相关文章:

javascript - svg Canvas 内的原生按钮标签

javascript - 在数组测试中查找对称差异失败

html - body 标签上的类别或 ID

javascript - HTML:监听输入的*所有*变化,而不仅仅是键盘驱动的变化?

javascript - 将每一行包裹在 span 中

javascript - 当输入值清除时 onChange 不起作用

Javascript 代码——函数 ToppingsWanted() 有什么问题?

使用 jQuery $.ajax 的 Javascript 范围查询

javascript - 将 props 传递给不同组件的映射数组

reactjs - 如何配置 package.json 来运行 eslint 脚本