2017-03-06 9 views
2

私は自分のapiから画像をレンダリングしたいのですが、まず空のかどうかを確認するためにlodashのサイズを使用します。レスキューでforEachを使用してimgを表示できませんでした

私は

{item.photos.toString()}を行うと、私はURLを参照してくださいすることができるよ、なぜコードの下だけでは動作しませんか?私のコンソールには何のエラーもありません。あなたの条件のオペランドが値undefinedを有するように

<div id="photo_upload"> 
    {size(item.photos) > 1 ? 
    item.photos.forEach(photo =>{ 
     <img src={photo} /> 
    }) 
    : <div><button>Upload</buton> 
    </div>} 
</div> 

答えて

1

forEachは、何も返しません。あなたはmap(そして内部にはreturn)が欲しかったです。また、アップロードボタンのためのあなたの閉じるボタンのタグが(以下固定)tが欠落しています注意してください。

<div id="photo_upload"> 
    {size(item.photos) > 1 ? 
    item.photos.map(photo =>{ 
     return <img src={photo} />; 
    }) 
    : <div><button>Upload</button> 
    </div>} 
</div> 

あなたはまた、簡潔な矢印の形を使用することができます。

Đào Minh Hạtが提起したポイントに追加
<div id="photo_upload"> 
    {size(item.photos) > 1 ? 
    item.photos.map(photo => <img src={photo} />) 
    : <div><button>Upload</button> 
    </div>} 
</div> 

his answer> 0ではなく> 1、およびkey):

<div id="photo_upload"> 
    {size(item.photos) > 0 ? 
    item.photos.map(photo => <img key={photo} src={photo} />) 
    : <div><button>Upload</button> 
    </div>} 
</div> 
+0

コードの最初のブロックをしながら、各要素のキーを追加する必要であり、第二に、なぜ一対一ではありません返す必要がありますか?同じ行にステートメントを置くと戻りは必要ありませんか?よくわかりません。 – Mellisa

+0

@Mellisa:Arrow関数には2つの形式があります:* Verbose *(関数本体の '{...}'を使用し、何かを返すために 'return'を使用する必要があります)、* concise * '{...}'が本体の周りにある場合、本体は式[not a statement]でなければならず、式の結果は自動的に返されます。改行はそれとは関係がありません。違いを生むのは '{...} 'かその欠如です。私は冗長な形式をすべて1行に書くことができました。複数の行にまたがって簡潔な形式を書いていたかもしれません。 –

+0

今日は何かを学んでくれてありがとう、ありがとう。 – Mellisa

1

あなたが使います条件size(item.photos) > 1のみですので写真が1枚しかない場合は表示されません。

もう一つは、ループ

item.photos.forEach(photo =>{ 
     <img key={photo} src={photo} /> 
    }) 
+1

私たちの二人の間に、私たちはすべての問題をカバーする答えを持っています。 :-) –

関連する問題