【问题标题】:Adding a product component to basket with react hooks使用反应挂钩将产品组件添加到购物篮
【发布时间】:2020-10-25 17:56:48
【问题描述】:

点击任何产品卡片的按钮,都必须将一个组件“AddedProduct”添加到组件“Basket”中。根据选择的产品,组件“AddedProduct”必须从对象数组“productsDataArray”中获取有关产品的正确数据。我试过这样的方法:篮子内容的初始状态是空数组。更改状态必须包含具有正确数据的组件“AddedProduct”。但是我的代码没有添加组件。我只是在研究reactjs,所以我不明白如何正确编写用于将产品添加到购物篮的函数“clickBtn”。请帮帮我。 (这里的代码没有'imports'):

 export const MainPage = props => {                 {/* parent component with product cards*/} 
     const [basketContent, changeBasketContent] = useState([]);  

     const updateContent = (product) => {
         const addedItems = productsDataArray.filter(item => item.id == 
                 product.id);
              return (
                 <div>                      
                    <AddedProducts productData = {product} />                                
                 </div>                                           
              );                   
         changeBasketContent([addedItems]);         
     };

     const clickBtn = (e) => {     
        updateContent(e.target);
     };  

           return ( 
             <div> 
                <div id = 'productSection'> 
                   {productsDataArray.map(item => {
                     return (
                      <div key = {item.id}>
                         ProductCard productData = {item}
                         clickBtn = {clickBtn}                                        
                       />             
                      </div>  
                       );
                     }                 
                  )}
                </div>
                <Basket/>
           </div> 
        );
     };

 export const ProductCard = props => {     
    const {productData, clickBtn} = props;           
      return (  
          <div id = 'productCard' style = {{width: '300px'}}>
               <img src = {productData.photo} alt = {productData.name} height 
                     = "200" />
               <div>
                  <h6>{productData.name}</h6>
                  <div>    
                     <p>Price: {productData.price}</p>
                     <button type = 'button' onClick = {clickBtn}>                               
                            Add to basket
                     </button>              
                  </div>                   
               </div>
             </div>        
             
           );
  };        
       
export const Basket = props => {        
const {basketContent} = props;    
    
    return (  
        <section id = 'basket-bloc'>       
            <div id = "basket-main">        
                 {basketContent}       
            </div>         
        </section>
      );
}; 

export const AddedProduct = props => {
   const {productData} = props;    
   return (  
     <div id = 'addedProduct'>         
        <div id = 'product-img-small' className = 'basketItem'>
            <img src = {productData.photo} width = '50'
                 alt = {productData.name} />
        </div>
         <div id ='product-name' className = 'basketItem'>
            <p>{productData.name}</p>         
        </div> 
     </div> 
     );
 };                                                  
    
 export const productsDataArray = [
   { 
      id : 1.1, 
      name: "Title1",
      price: "10$",
      photo: img1     
   },
   { 
     id : 1.2,  
     name: "Title2",
     price: "20$",
     photo: img2     
   },
   { 
     id : 1.3,  
     name: "Title3",
     price: "30$",
     photo: img3     
   },
   { 
    id : 1.4,   
    name: "Title4",
    price: "25$",
    photo: img4    
   }          
];                  
            
           
                 

【问题讨论】:

    标签: reactjs components react-hooks


    【解决方案1】:

    尝试替换

    <button type = 'button' onClick = {clickBtn}>
        Add to basket
    </button> 
    

    <button type='button' onClick={(e) => clickBtn(e)}>
        Add to basket
    </button>
    

    我们必须这样做,因为我们只有一个处理多个项目。

    【讨论】:

    • 不幸的是,它并没有改变任何东西,我认为函数'updateContent'和'clickBtn'有问题
    • 您在 MainPage 组件中使用 catData,但我似乎无法在任何地方找到它。
    • 对不起,这是一个失误,实际代码中写的是productData。
    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多