使用动态名称反映本机映像

时间:2015-11-27 09:31:24

标签: image react-native

这没问题:

<Image source={require('./images/ace.png')} />

但是这个:

var name = 'ace';

<Image source={require('./images/' + name + '.png')} />

我尝试了各种变体,但它总是返回错误:

要求未知模块“./images/ace.png”。如果您确定该模块在那里,请尝试重新启动打包器。

3 个答案:

答案 0 :(得分:4)

根据本机文档的反应,

// BAD
var icon = this.props.active ? 'my-icon-active' : 'my-icon-inactive';
<Image source={require('./' + icon + '.png')} />

// GOOD
var icon = this.props.active ? require('./my-icon-active.png') : require('./my-icon-inactive.png');
<Image source={icon} />

如何预先声明所需内容并有条件地使用它?

答案 1 :(得分:1)

尝试使用网址

<Image
    style={styles.img}
    resizeMode={'contain'}
    source={{uri: imageURL}}>

和imageURL中可能是一个URL

例如

var imageURL = 'http://assets22.pokemon.com/assets/cms2/img/pokedex/full/702.png'

答案 2 :(得分:-1)

现在的解决方案,名为Row的组件:

const Row = (props) => {
  let employmentType;

  // Set my own image component dynamically
  if(props.SOME_CONDITION){
     employmentType = <Image source={require('image!Driver')} style={styles.employeeLogo} />
  }
  else{
     employmentType = <Image source={require('image!ANOTHERIMAGE')} style={styles.employeeLogo} />
  }

  return(
    <View style={styles.row_container} elevation={2}>

      {employmentType}
      <Text style={styles.row_text}>{'../Assets/Images/' + props.PictureUrl + '.png'}</Text>
      <Text style={styles.row_text}>{props.Fullname}</Text>
      <Text style={styles.row_text}>{props.EmploymentType}</Text>
    </View>
  );
};