2017-08-10 4 views
-1

私は現在、各オブジェクトのリスト要素を返すレンダリングメソッドの製品の配列を使ってマッピングしています。利用可能な製品の数量のhtml selectタグを作成します。私はこれを行うと思います唯一の方法は、すべての数量のオプションをループすることですが、これは、マップ関数内で使用するときに構文エラーをスローするようです。Reactのマップ関数をどのようにループすることができますか?

私はこれに関する質問は見つからないようですが、マップ関数内のループ全体がすでにjsxを返しています。

render() { 
    const products = this.props.products.map((product, id) => 

      <li key={id} className='products-list-container' > 

       <div className='product-inner-div-wrapper'> 

        <div className='product-title-container'> 
         <p>{product.name}</p> 
        </div> 

        <div className='product-price-container'> 
         <p>{product.price.formatted_with_code}</p> 
        </div> 

        // THIS IS WHERE I TRY TO LOOP AND CREATE AN OPTION 
        // FOR EVERY QUANTITY 
        <select> 
         { 
          for (var i = 0; i < products.quantity; i++) { 
         return <option value={i}>{i}</option> 
          } 
         } 
        </select> 


        <div className='product-add-item-container'> 
        { product.is.sold_out ? <p>SOLD OUT</p> : 
         <p onClick={() => this.addItem(product.id)}>add to cart</p> 
        } 
        </div> 

        <div className='products-image-container'> 
         <img src={product.media.source} /> 
        </div> 


       </div> 

      </li> 
     ); 
    return(
      <div className='products-list-container'> 
       <ul className='products-list-ul'> 
        {products} 
       </ul> 
      </div> 
     ) 
} 
+1

[loop inside React JSX](https://stackoverflow.com/questions/22876978/loop-inside-react-jsx)の可能な複製 –

+0

products.quantityを使用して別のマップを作成し、その内部にvarを使用することができます地図。 –

+0

@MayankShuklaどのように表示されませんか?私のコードは、戻り値の外にあるマップ関数を示しています。これはすでにjsx要素を返しています。では、マップ関数の内部にあるjsx要素の内部をどのようにループするのですか?中括弧は、私はこのproducts.quantity((量、ID)=>を試み、このシナリオ –

答えて

2

代わりにループを作成するのではなく、あなたには、いくつかの配列の策略で、ここにもマップを使用することができます。

{new Array(product.quantity).fill().map((_, i) => <option>{i}</option>)} 

それは非常にきれいではありません - しかし、あなたは、独自の機能にこれを引き出すことができ、記述的に名前を付けます。

+0

ありがとう、これはきれいではありませんが、製品ではなくproduct.quantityを除いて問題を解決します。しかし、ありがとう! –

+0

オタクについては申し訳ありません。ええ、それは醜いですが、リファクタリングの後にする必要はありません=) –

+0

これは商品の量を示すために、私が与えたコードは0からすべてを開始します。 i変数に追加するだけでなく、1以上のすべてを設定します。 –

関連する問題