2016-11-07 61 views
0

我只是在reactjs中繞過組件。這是我的組件/容器的一部分:如何在Reactjs中觸發組件的方法?

onAddToCart(id) { 
 
       console.log('testing onaddtocart') 
 
       this.props.dispatch({type: 'ADD_TO_CART', id: id}); 
 
      } 
 
     
 
render() { 
 
     
 
       var Packs = []; 
 
       if (this.props.packsData != undefined && this.props.packsData.existingFoxtelPackage != undefined) { 
 
        if (this.props.packsData.existingFoxtelPackage.eligiblePacks.length > 0) { 
 
         Packs = this.props.packsData.existingFoxtelPackage.eligiblePacks; 
 
         console.log('testing=Packs', Packs); 
 
        } 
 
       } 
 
     
 
       return (
 
        <div>hello from Packscontainer!!! 
 
     
 
         <div> 
 
          { 
 
           Packs.map(pack => 
 
            <Pack id={pack.id} name={pack.name} addToCart={this.onAddToCart.bind(this, pack.id)}/> 
 
           )} 
 
         </div> 
 
        </div> 
 
       ) 
 
}

的問題是,onAddToCart方法未在addToCart按鈕點擊發射時,這是包組件的一部分:

render() { 
 
     const { addToCart } = this.props 
 
     return (
 
      <div>hello from pack 
 
       {this.props.id} - {this.props.name} 
 

 
       <button onClick={addToCart}>Add to cart</button> 
 
      </div> 
 
     ) 
 
    }

我怎樣才能觸發onAddToc藝術方法在容器中?

+0

如果打印出來'addToCart'或調​​試到'render',看到的價值,它是一個函數或'undefined'另一個問題?你是否在控制檯中看到任何錯誤,抱怨'this'是'undefined'(因爲你沒有綁定'addToCart')? –

回答

0

據工作現在有一個與頁面