require()必须有一个字符串文字参数React Native

Zub*_*air 17 javascript image react-native

我的应用程序中的组件如果被分配了直接字符串值("someImage.png"),它可以正常工作,但如果我尝试通过将图像名称存储在局部变量中来分配它,则会给出此异常"require()必须具有单个字符串文字参数"此行正常工作

<ImageBackground source={require("./Resources/bg/imageone.png")} resizeMode='cover' style={customStyles.backdrop}>
Run Code Online (Sandbox Code Playgroud)

在这种情况下会出现问题

let imageName = "./Resources/bg/imageone.png";          
<ImageBackground id="123" source={require(imageName)} resizeMode='cover' style={customStyles.backdrop}>
Run Code Online (Sandbox Code Playgroud)

我也发现这里报道同样的问题,但还没有人回答.你能帮帮我吗?

sou*_*tot 19

此动态图像示例还可以显示如何使用图像源值正确分配变量.建议将整体分配给require变量,而不仅仅是其值.

// GOOD
<Image source={require('./my-icon.png')} />;

// BAD
var icon = this.props.active ? 'my-icon-active' : 'my-icon-inactive';
<Image source={require('./' + icon + '.png')} />;

// GOOD
var icon = this.props.active
  ? require('./my-icon-active.png')
  : require('./my-icon-inactive.png');
<Image source={icon} />;
Run Code Online (Sandbox Code Playgroud)

https://facebook.github.io/react-native/docs/images.html

希望能帮助到你

  • 如果图像名称是完全动态的并且在道具中传递怎么办?我们将如何渲染? (2认同)
  • @Green,是的,提供的代码确实回答了问题,只需注意```// GOOD```评论下的代码.正如我在答案文本中提到的,它代表了分配图像变量的正确方法.此外,官方文档是回答问题的最佳资源.复制/粘贴它并不羞耻. (2认同)

Onu*_*hin 8

如果您在数据中有索引,那么我对此问题的处理方法是:

const image1 = require('../assets/images/image1.png');
const image2 = require('../assets/images/image2.png');
const image3 = require('../assets/images/image3.png');

const images = [image1, image2, image3];

...

<Image source={images[index]} />
Run Code Online (Sandbox Code Playgroud)

  • 我想要一种不涉及多次写`require('pathToImage')`的方法 (3认同)