本机反应:如何在Android上设置Image defaultSource

时间:2017-06-20 05:48:34

标签: image react-native

本机反应:如何在Android上设置Image defaultSource。

我已阅读React native 1.58文件。我发现Image props defaultSource仅支持iOS。

我需要在网络图片加载错误时设置默认图片。

我曾经写过这样的代码:

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

现在有一个问题。当URL是字符串类型时,它不是正确的网络图像。由于网址为true,因此图片不会显示任何内容。

我看到图片道具onError可能解决了我的问题。

我需要设置占位符Image。

6 个答案:

答案 0 :(得分:5)

你只是试试这个并希望它有效......

from bson.objectid import ObjectId
  

在onLoad()中设置showDefault = false不应该触发url   因为默认情况下在android和IOS中缓存图像,所以再次获取。

答案 1 :(得分:4)

我尝试使用 @Ravi Raj 的答案,但似乎与加载图片失败无关。
除了答案之外,图像将在默认图像和实际图像之间保持闪烁。 ( @vzhen 遇到的错误)

因此我根据他的回答开发并生成了这个组件。看看这是否适合你;)

progressive-image.js - 组件<ProgressiveImage/>

import React, { Component } from 'react';
import { Image } from 'react-native';

export default class ProgressiveImage extends Component {
  state = { showDefault: true, error: false };

  render() {
    var image = this.state.showDefault ? require('loading.png') : ( this.state.error ? require('error.png') : { uri: this.props.uri } );

    return (
      <Image style={this.props.style} 
             source={image} 
             onLoadEnd={() => this.setState({showDefault: false})} 
             onError={() => this.setState({error: true})}
             resizeMode={this.props.resizeMode}/>
    );
  }
}

然后导入并调用这样的组件:

import ProgressiveImage from './progressive-image';

<ProgressiveImage style={{width: 100, height: 100}} 
                  uri={'http://abc.def/ghi.jpg'} 
                  resizeMode='contain'/>

希望这个答案可以帮到你;)

答案 2 :(得分:4)

为我工作

mystuff = sum(map(lambda x: x.split(', '), mystuff), [])

答案 3 :(得分:1)


const [error, setError]=setState(false);

return(){

 <Image
              onError={(error) => {
                setError(true);
              }}
              source={
                error
                  ? require("../../assets/images/defaultImage.png")
                  : { uri: imageUrl }
              }

             
            />

}

如果您的网络图片无法加载或出现 404 错误,这将显示默认图片。

答案 4 :(得分:0)

根据docs,在Debug构建中,Android上会忽略defaultSource道具,因此,如果您在加载实际源时正在寻找占位符-避免出现错误-请确保进行测试实施变通方法以仅由于调试模式加载它之前将其置于释放模式。

“注意:在Android上,调试版本会忽略默认的源prop。”

答案 5 :(得分:0)

n = int(input) scores_dict = {} for _ in range(n): name = input() score = int(input()) scores_dict[name] = score # The loop will produce this dict ''' scores_dict = {'Harry': 37.21, 'Berry': 37.21, 'Tina': 37.2, 'Akriti': 41, 'Harsh': 39 } ''' x = min(scores_dict, key=scores_dict.get) filtered_scores = {k:v for k,v in scores_dict.items() if v != scores_dict[x]} x = min(filtered_scores, key=scores_dict.get) res = [key for key in filtered_scores if filtered_scores[key] == filtered_scores[x]] print(res) 在android上不起作用...
请按照以下方法进行修复:
不要忘记导入defaultSourceViewImageBackground

Image