文档说引用静态图像的唯一方法是使用 require。
但我不确定在哪里反应期望有这些图像。这些示例没有任何域,因此您似乎必须转到 Xcode 并将它们添加到 Images.xcassets,但这对我不起作用。
文档说引用静态图像的唯一方法是使用 require。
但我不确定在哪里反应期望有这些图像。这些示例没有任何域,因此您似乎必须转到 Xcode 并将它们添加到 Images.xcassets,但这对我不起作用。
使用面向 iOS 的 React Native 0.41(2017 年 3 月),我发现它很简单:
<Image source={require('./myimage.png')} />
图像文件必须与需要它的 .js 文件位于同一文件夹中,“./”才能正常工作。
我不必更改 XCode 项目中的任何内容。它刚刚奏效。
请注意,路径似乎必须以“./”或“../”开头并且是完整的小写。我不确定所有的限制是什么,但是从简单的开始并继续前进。
希望这对某人有所帮助,因为这里的许多其他答案似乎过于复杂并且充满了(顽皮的)场外链接。
更新:顺便说一句 - 官方文档在这里: https ://reactnative.dev/docs/images
它完全按照您的预期工作。有一个错误https://github.com/facebook/react-native/issues/282阻止它正常工作。
如果您在与 xcode 项目相同的文件夹中有 node_modules(带有 react_native),您可以编辑 node_modules/react-native/packager/packager.js 并进行此更改:https ://github.com/facebook/react-native/拉/286/文件。它会神奇地工作:)
如果您的 react_native 安装在其他地方并且补丁不起作用,请在https://github.com/facebook/react-native/issues/282上发表评论,让他们知道您的设置。
ES6 解决方案:
import DefaultImage from '../assets/image.png';
const DEFAULT_IMAGE = Image.resolveAssetSource(DefaultImage).uri;
进而:
<Image source={{uri: DEFAULT_IMAGE}} />
如果动态加载图像,可以创建一个如下所示的 .js 文件并在其中添加。
export const data = [
{
id: "1",
text: "blablabla1",
imageLink: require('../assets/first-image.png')
},
{
id: "2",
text: "blablabla2",
imageLink: require('../assets/second-image.png')
}
]
在您的组件 .js 文件中
import {data} from './js-u-created-above';
...
function UsageExample({item}) {
<View>
<Image style={...} source={item.imageLink} />
</View>
}
function ComponentName() {
const elements = data.map(item => <UsageExample key={item.id} item={item}/> );
return (...);
}
从 UIExplorer 示例应用程序:
静态资产应通过前缀
image!
和 位于应用程序包中。
所以像这样:
render: function() {
return (
<View style={styles.horizontal}>
<Image source={require('image!uie_thumb_normal')} style={styles.icon} />
<Image source={require('image!uie_thumb_selected')} style={styles.icon} />
<Image source={require('image!uie_comment_normal')} style={styles.icon} />
<Image source={require('image!uie_comment_highlighted')} style={styles.icon} />
</View>
);
}
我在使用 react-native-navigation 时遇到问题,我创建了自己的标题组件,然后在标题之前的左侧插入了一个图像 - 作为徽标,然后当我触发导航到另一个屏幕然后再次返回时,徽标再次加载,超时接近 1 秒,我的文件是本地的。我的解决方案:
徽标.json
{"file" : "base64 big string"}
应用程序.js
import Logo from '.../Logo.json'
...
<Image source={{uri:Logo.file}} />
要显示本地文件夹中的图像,您需要写下代码:
<Image source={require('../assets/self.png')}/>
在这里,我将图像放在资产文件夹中。
我们可以这样做:
const item= {
image: require("../../assets/dashboard/project1.jpeg"),
location: "Chennai",
status: 1,
projectId: 1
}
<Image source={item.image} style={[{ width: 150, height: 150}]} />
这来自https://github.com/facebook/react-native/issues/282为我工作:
adekbadek 于 2015 年 11 月 11 日发表评论 应该提到的是,您不必将图像放在 Images.xcassets 中 - 您只需将它们放在项目根目录中,然后只需 require('./myimage.png') as @anback写了看看这个 SO 答案和它引用的拉
您必须向源属性添加一个具有名为“uri”的属性的对象,您可以在其中指定图像的路径,如以下示例所示:
<Image style={styles.image} source={{uri: "http://www.mysyte.com/myimage.jpg"}} />
请记住通过 style 属性设置宽度和高度:
var styles = StyleSheet.create({
image:{
width: 360,
height: 40,
}
});