图像组件上的React-native失败propType

Max*_*lll 27 javascript xcode reactjs react-native

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

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

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

它的父组件:

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

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

"警告:propType失败:提供给'Image'的prop'ource'无效,检查'BasicComponent'的渲染方法"

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

zvo*_*ona 51

您应该要么需要本地资产,要么使用带uri密钥的对象.

所以要么MainComponent:

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

或者在BasicComponent:

return (
  <Image 
    source={{uri: this.props.source}}
  />
);
Run Code Online (Sandbox Code Playgroud)

  • 源道具中的uri属性对我有用。require方法没有。知道为什么吗? (2认同)

Ngu*_*uấn 8

你应该使用 uri 来设置源图像

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