使用 React Native 动态加载本地存储的图像
Dynamic loading of locally stored images with react native
在 loop/list 中动态加载图像资源时出现问题。
我拥有所需的所有静态本地资源:
assets/images.js
const images = {
appLogo: require('./app-logo.png'),
cardOne: require('./cards/card-1.png'),
cardTwo: require('./cards/card-2.png'),
...
cardForty: require(./cards/card-40.png)
}
export default images;
然后在我的列表屏幕中:
...
import images from '../assets/images';
...
renderListItems(item) {
const image_name = `images.card${item.cardName}`;
console.log(image_name); // images.cardOne, images.cardTwo etc..
return (
<ListItem avatar>
<Thumbnail square size={80} source={image_name} /> // This is nativebase component which wraps the RN image component
<Body>
<Text>{item.name}</Text>
</Body>
<Right>
<NBIcon name="arrow-forward" />
</Right>
</ListItem>
);
}
...
未加载任何资源。然而,如果我直接将 source={image_name} 更改为 source={images.cardOne} (其中 images.cardOne 与第一次迭代中的 image_name 变量完全相同)它会起作用- 除了他们都有相同的形象。
我也尝试过使用 {{ uri: image_name }} 语法,但也没有任何反应。
除了创建大量的 switch 语句外,似乎没有任何解决方案
那是因为 image_name 是一个字符串,其值为 images.cardOne
而 images.cardOne 也是一个字符串,但其值为文件系统中图像的实际路径(例如 ./app-logo.png
)。所以如果你想动态加载图像对象到image_name,你应该像这样使用括号表示法:
const image_name = images[`card${item.cardName}`];
这样 image_name 现在将指向您的图像的路径(例如 ./app-logo.png
)。
在 loop/list 中动态加载图像资源时出现问题。
我拥有所需的所有静态本地资源:
assets/images.js
const images = {
appLogo: require('./app-logo.png'),
cardOne: require('./cards/card-1.png'),
cardTwo: require('./cards/card-2.png'),
...
cardForty: require(./cards/card-40.png)
}
export default images;
然后在我的列表屏幕中:
...
import images from '../assets/images';
...
renderListItems(item) {
const image_name = `images.card${item.cardName}`;
console.log(image_name); // images.cardOne, images.cardTwo etc..
return (
<ListItem avatar>
<Thumbnail square size={80} source={image_name} /> // This is nativebase component which wraps the RN image component
<Body>
<Text>{item.name}</Text>
</Body>
<Right>
<NBIcon name="arrow-forward" />
</Right>
</ListItem>
);
}
...
未加载任何资源。然而,如果我直接将 source={image_name} 更改为 source={images.cardOne} (其中 images.cardOne 与第一次迭代中的 image_name 变量完全相同)它会起作用- 除了他们都有相同的形象。
我也尝试过使用 {{ uri: image_name }} 语法,但也没有任何反应。
除了创建大量的 switch 语句外,似乎没有任何解决方案
那是因为 image_name 是一个字符串,其值为 images.cardOne
而 images.cardOne 也是一个字符串,但其值为文件系统中图像的实际路径(例如 ./app-logo.png
)。所以如果你想动态加载图像对象到image_name,你应该像这样使用括号表示法:
const image_name = images[`card${item.cardName}`];
这样 image_name 现在将指向您的图像的路径(例如 ./app-logo.png
)。