【问题标题】:× TypeError: Cannot read property 'bind' of undefined onClick× TypeError: Cannot read property 'bind' of undefined onClick
【发布时间】:2023-03-15 08:29:01
【问题描述】:

尝试了多次绑定,但仍然无法使用方法 addItem 将产品添加到购物车, App是我的父类,我试图将prop'addItem'(Type:方法)传递给Products,它将将此方法传递给Product(Products的子级)并最终在Product中执行

class App extends Component {
  constructor(props) {
  super(props);
  this.state = {
    cartitems: [],
  }
  this.addItem = this.addItem.bind(this);
}

addItem(item) {
  this.setState({
      cartitems : this.state.cartitems.concat([item]) });
...
 <Route exact path='/Products' component={Products} addItem={this.addItem} />
}

Products 是一个从我的数据库中获取数据并将其传递给 Product 的类

<div className="row">
    {items.map(item => <Product key={item.id} product={item} addItem={this.addItem} />)}
</div>

最后,在产品上,每当单击按钮时,我都会尝试将产品添加到状态卡中,

<button className="btn btn-primary" onClick= {() => this.props.addItem.bind(this, this.props.product) }>Add to Cart</button>

我对 React 非常陌生,如果有人能提供帮助,我将不胜感激!标题是错误名称。谢谢!!!

【问题讨论】:

  • 请提供一个最小的例子来重现你的问题,然后我最终可以帮助你
  • App 是我的父类,我试图将 prop 'addItem'(Type: method) 传递给 Products,然后将这个方法传递给 Product(Product 的子级) 并最终在 Product 中执行。希望这会有所帮助!
  • 正如我所说,请提供最小的工作示例,例如在stackblitz.com

标签: reactjs binding typeerror e-commerce react-props


【解决方案1】:

如果没有看到您的 Product 组件,很难判断,但我相信您在对方法的一个引用中缺少对 props 的引用。 我认为应该是

   {items.map(item => <Product key={item.id} product={item} addItem={this.props.
addItem} />)}

【讨论】:

  • 我的产品没有太多,它显示来自 Productsprice 的映射项目(产品)、图像 URL 和名称,已按照建议更改但仍然无法正常工作... TypeError: this.props。 addItem 不是函数
猜你喜欢
  • 2021-06-25
  • 2017-04-24
  • 2021-09-18
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 2019-02-12
  • 2013-01-15
相关资源
最近更新 更多