当我连接源代码字符串时,我有来自道具的图像源,比如:需要(.../资产/图像/${props.image})
。然后我在图像的源属性上调用它,我得到了一个错误:失败的道具类型:无效的道具提供给Image
。
有人能帮忙吗,非常感谢
function Category(props) {
let image = `require(../assets/images/${props.image})`;
console.log(image);
return (
<TouchableOpacity style={styles.container}>
<View>
<Image style={{ width: 60, height: 60 }} source={image}></Image>
<Image style={{ height: 10, width: 12 }} source={require('../assets/images/Layer1.png')}></Image>
</View>
<View></View>
</TouchableOpacity>
);
}
类别由FlatList上的renderItem和item调用。image是image:layer1的文件名。巴布亚新几内亚,第2层。巴布亚新几内亚。。。父组件-主屏幕:
function MainScreen({ navigation }) {
return (
<Screen style={styles.container}>
<Header isHome={true}>HOME</Header>
<ScrollView>
<View style={styles.main}>
<Carousel data={bannerSlide} />
<Text>Go to Detail</Text>
<View style={styles.category}>
<FlatList
style={styles.dishList}
data={dishList}
keyExtractor={item => item.label.toString()}
horizontal
snapToAlignment="center"
scrollEventThrottle={16}
showsHorizontalScrollIndicator={false}
renderItem={({ item }) =>
<Category
name={item.name}
image={item.image}
/>
}
/>
</View>
</View>
</ScrollView>
</Screen>
);
}
您正在尝试将字符串传递给
image
变量和源将失败,因为您提供的是字符串。你需要像下面那样更新它
let image = require(`../assets/images/${props.image}`);
require
在设备上呈现应用程序之前嵌入所有图像,这意味着您不能在require中使用动态本地路径。你可以在这里阅读更多信息。最好的方法是将资源嵌入到一个单独的js文件中,并从那里导出它们,然后在需要的地方导入和引用它们。
例如,拥有一个imageManager。js,代码如下
export default {
first_image: require('./image.png');
}
然后在您的组件中,您可以使用它们,如下所示
import images from './imageManager';
function Category(props) {
let image = images[props.image];
...
道具。然后可以将图像设置为“first_image”等。
希望这有帮助。
我试图展示一个简单的例子。通过将图像路径作为道具发送到要渲染它的组件,来创建jpg图像。以下面的方式。 应用程序。js 图像显示。js 图像lider.js 我的文件夹结构是: 理想情况下,当我通过本地存储的图像路径时,图像应该被显示,但是我没有看到任何图像显示,而是一条警告消息,上面写着:“失败的道具类型:无效的道具‘源’提供给‘转发参考(图像)’”
我尝试动态渲染图像。但我得到了这个错误。动态获取图像源并进行渲染的解决方案是什么? 主要组成部分。js 卡片详情。js 我也尝试过其他方法,但没有成功。我在使用此方法时遇到此错误: 未知命名模块 主要组成部分。js 卡片详情。js
我有这个警告在我的项目:警告:失败的道具类型:无效的道具<代码>源代码提供给<代码>图像。我加载图像从sampleProducts.jsonRecommendend.js并通过它作为道具在Products.js,但图像不会加载,因为警告。 样本产品。json 建议。js 产品。js
我已经为此挣扎了一段时间,似乎找不到其他有同样问题的人。我有这个组件和容器,它们是我的开始屏幕,应该在初始路径上呈现。 组件/困难选择。jsx 容器/困难选择。jsx 下面是我尝试将这些组件分配到路由的地方。这就是我得到的错误。顺便说一句,我输入的控制台日志显示,我导入的组件是函数,其中包含的图像是因为我认为它应该是一个类。
我是个新来的本地人。我已经创建了一个屏幕。其中我添加了数字签名。当我拖动签名时,我将其图像保存为状态。然后我在屏幕上显示这个状态图像。但是我得到了如下错误=警告:失败的道具类型:无效的道具