需要反应原生的图像0.14.2

时间:2015-11-30 12:51:41

标签: react-native

这样做我的代码工作正常

<Image
source={require('../../assets/images/music_star.png')}
style={styles.musicStar}
/>

但这样做会给我一个错误

let imgSource = '../../assets/images/music_star.png';
<Image
source={require(imgSource)}
style={styles.musicStar}
/>

我收到错误:

要求未知模块“../../ assets / images / music_star.png”

我做错了什么?如何在react-native 0.14.2?

中要求存储在变量中的图像

1 个答案:

答案 0 :(得分:9)

您可以阅读更多in the docs但基本上,为了使其正常工作,必须静态了解require中的图像名称:

// GOOD
<Image source={require('./my-icon.png')} />

// 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');

要将图像从父级传递给子级,您应该在父级中要求它:

/**
 * The entry point for the iOS app.
 */
import React, {
  AppRegistry,
  Component,
  Image,
  View,
} from 'react-native';

class Child extends Component {
  render() {
    return (
      <Image source={this.props.image} />
    )
  }
}

export default class Parent extends Component {
  render() {
    return (
      <View>
        <Child image={require('./test.png')} />
      </View>
    );
  }
}

AppRegistry.registerComponent('App', () => Parent);