我刚刚开始使用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;的渲染方法
有谁知道这里会发生什么?
答案 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'}}
/>
);