图像组件

时间:2016-04-06 19:37:49

标签: javascript xcode reactjs react-native

我刚刚开始使用React-native,并且对React创建Web应用程序有相当不错的把握......我遇到了一个令人困惑的问题,这个问题在处理网络反应时从未发生过。

基本上我正在渲染一个组件,其图像是通过映射其父组件中的对象数组来动态生成的。

export default class ImageComponent extends React.Component {
  render() {
    return (
        <Image source={this.props.source}/>
    );
  }
};

其父组件:

export default class MainComponent extends React.Component {
  constructor(props) {
    super(props);
   this.state = {
      images:[
        { src: './src/images/1.png'},
        { src: '/src/images/2.png'},
        { src: './src/images/3.png'}
      ]
    }
   }

  render() {
    let images = this.state.images.map((image) => {
      return(<ImageComponent source={image.src}  />);
    })

    return (
      <View>
        {images}
      </View>
    );
  }
};

在设备模拟器中,我收到以下错误:

&#34;警告:propType失败:无效道具&#39;来源&#39;提供给&#39; Image&#39;检查&#39; BasicComponent&#39;&#34;的渲染方法

有谁知道这里会发生什么?

2 个答案:

答案 0 :(得分:38)

您应该要求本地资产或使用带有uri密钥的对象。

所以要么在MainComponent

this.state = {
  images:[
    require('./src/images/1.png'),
    require('./src/images/2.png'),
    require('./src/images/3.png')
  ]
}

BasicComponent

return (
  <Image 
    source={{uri: this.props.source}}
  />
);

答案 1 :(得分:4)

您应该使用uri设置源图像

return (
  <Image 
    source={{uri: 'https://reactnative.dev/docs/assets/p_cat2.png'}}
  />
);