需要反应原生的图像0.14.2

Aak*_*del 7 react-native

这样做我的代码工作正常

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

但这样做会给我一个错误

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

我收到一个错误:

需要未知模块"../../assets/images/music_star.png"

我究竟做错了什么?如何在react-native 0.14.2中要求存储在变量中的图像?

Alm*_*uro 9

您可以在文档中阅读更多内容,但基本上,为了使其工作,必须静态地知道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');
Run Code Online (Sandbox Code Playgroud)

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

/**
 * 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);
Run Code Online (Sandbox Code Playgroud)