2017-06-20 7 views
2

反応するnative:AndroidでImage defaultSourceを設定するにはどうすればいいですか?反応するnative:AndroidでImage defaultSourceを設定するには

私はReact native 1.58ドキュメントを読んでいます。 Image小道具defaultSourceがiOSでのみサポートされています。

ネットワークイメージの読み込みエラー時に、デフォルトのイメージを設定する必要があります。

私はこのようなコードを書くために使用される:

{ ImageUrl? 
       <Image style={styles.docimg} 
         source={{uri: ImageUrl}}/> 
        : 
       <Image style={styles.docimg} 
         source={require('../../../resource/default.png')}/> 
       } 

は今問題があります。 URLが文字列型の場合、正しいネットワークイメージではありません。 URLがtrueであるため、画像には何も表示されません。

Image小道具onErrorが多分私の問題を解決するのを見ました。

プレースホルダImageを設定する必要があります。画像はAndroidとiOSではデフォルトでキャッシュされるので、再びフェッチURL をトリガしてはならないのonLoad()内showDefault = falseを設定

あなただけのこれを試してみて、それが動作を期待
+0

「ネットワークイメージが正しくありません」とはどういう意味ですか、ネットワークイメージが無効なときに表示される文字列は何ですか?無効なURL文字列の例を挙げてください。 –

+0

@RaviRajネットワークイメージのURLが間違っています。たとえば、プレースホルダ画像を表示するなど、ネットワークのImage URLが間違っているときに何かする必要があります。 – jiexishede

+0

@RaviRaj答えは便利ですが、onErrorだけの状態を操作する必要があります。 onError = {()=> this.setState({showDefault:true}) – Hmm

答えて

2

...

// initially showDefault will be false 
var icon = this.state.showDefault ? require('../../../resource/default.png') : {uri: ImageUrl}; 

return(
    <Image 
    style={styles.docimg} 
    source={icon} 
    onLoadStart={() => this.setState({showDefault: true})} 
    onLoad={() => this.setState({showDefault: false})} 
    /> 
) 

+0

'onLoad trigger showDefault:false'は、デフォルト画像と実際の画像の間で画像が点滅し続けます。何か案が? – vzhen

関連する問題