2016-07-22 27 views
2

jsonから記事データを取得し、記事テキスト、つまり主人公モジュールの大きな画像を表示するモジュールを作成しています。React JSで壊れた画像を確認する方法

私はデータを取得して設定していますので、画像があれば画像が表示され、データに画像がない場合はデフォルト画像が表示されます。 問題は、このメソッドは、既定のイメージを表示するために壊れたリンクを置き換えないことです。

私はまだ反応して状態を使用して新しい...質問は、私は壊れたリンクをチェックするために状態を使用する必要がありますし、どうすればいいですか?

これは私がモジュール内の小道具としてのデータを取得する方法である:

const { newsItemData: { 
      headline = '', 
      bylines = [], 
      publishedDate: publishDate = '', 
      updatedDate: updatedDate = '', 
      link: newsLink = '', 
      contentClassification: category = '', 
      abstract: previewText = '', 
      abstractimage: { filename: newsImage = '' } = {}, 
      surfaceable: { feature: { type: featureType = '' } = {} } = {}, 
     } = {}, 
     wideView, 
     showPill, 
     defaultImage } = this.props; 

私はこの方法で情報を表示:

<div className={imageContainerClassName} style={customBackgroundStyles}> 
     {newsImage ? <img className="img-responsive" src={newsImage} alt={headline}/> : <img className="img-responsive" src={defaultImage} alt={headline}/>} 
</div> 

私もチェックするために何をすべき壊れた画像? これは必要なすべての関連データだと思います。他に何かを表示する必要があるかどうかを教えてください。 ありがとう!

+0

が、私はこの問題に対処することができます何かを書いてみてください:https://github.com/mbrevda/react-img-multiはそれは素晴らしいです – Mbrevda

答えて

14

onerrorというイメージのネイティブイベントがあり、イメージをロードできない場合にアクションを実行できます。

<img onError={this.addDefaultSrc} className="img-responsive" src={newsImage} alt={headline}/> 

//in your component 
addDefaultSrc(ev){ 
    ev.target.src = 'some default image url' 
} 
+0

!それは私が必要としていたものです。どこでこれらのネイティブイベントについてもっと知ることができますか?私はGoogleの検索で始めるが、そこに良い医者がいる場合は教えてください。 D – nyhunter77

+1

@ nyhunter77このMDNページは素敵なスタートですhttps://developer.mozilla.org/en-US/docs/Web/Events – eltonkamami

+0

愚かな質問かもしれません私の答えを得るためにこのページの情報をどのように使用するのですか?ここには何があるのか​​よく分からない。ありがとう! @eltonkamami – nyhunter77

0

私の理解によれば、あなたは壊れた画像を見たいと思っています。 onError属性のメソッドを呼び出す必要があります。これをチェックしてください jQuery/JavaScript to replace broken images

+0

私が理解しているように、JqueryとReact JSを混在させるのは悪いフォームです。今まで私は必要ではありませんでしたが、私の背中に1本の腕が結ばれているような気がします。 – nyhunter77

+0

はい、もちろんです。私はちょうどあなたにこれを行う方法のヒントを与えています。反応してもonError属性を使用し、反応している場合はimageタグのonError = {somecomponentmethod}のような属性でコンポーネントメソッドを呼び出す方法を知っています。 –

+0

まあ、ありがとう、私は "Jqueryの方法"や純粋なJSの方法に似たいくつかの方法を試みたが、私は成功しなかった – nyhunter77

関連する問題