从包含许多文件的文件夹中反应本机动态导入图像

时间:2018-04-28 17:51:23

标签: react-native react-native-android

我有一个图像文件夹说answers我在哪里存储我的问题的答案是图像

目前该文件夹中有200张图片。

现在我想根据用户的回答显示答案的图像。

我随机生成答案

`var answer = getAnswers(data)` // some calculation for file name for answer

<Image source={require('../path/to/my/answer/' + answer + '.jpg')}

这样做我收到错误``require expect exactly 1 string literal argument

我开始知道建造者需要在建造之前知道位置。 但是如何解决这类问题。

我无法为require

初始映射200个文件
var one = require('../path/one.jpg')
var two = require('../path/two.jpg')

如何解决此类问题。有没有办法做到这一点??

需要帮助。

1 个答案:

答案 0 :(得分:0)

require中的动态搜索路径根本不可能。

根据我的理解,你有两个选择:

<强> 1。生成图像文件

您可以制作一个扫描图像文件夹并生成图像网址列表的脚本,而不是手动编写200行。我会建议一种类似的格式:

// Images.js

export const Answers = { 
   ANSWER_ONE : require('../path/one.jpg'),
   ANSWER_TWO : require('../path/two.jpg'),
   ...
}

然后使用它:

import {Answers} from './Images'

var answer = getAnswers(data)

<Image source={Answers[answer]} />

<强> 2。将图像文件复制到资产文件夹

如果选择此选项,则必须将所有图像文件复制到android和ios项目资源文件夹中。然后你可以像这样使用它们:

var answer = getAnswers(data)

<Image source={{uri: '../path/to/my/answer/' + answer + '}} />

Read more about using image assets

...

即使第二种选择看起来很诱人,但在大多数情况下我更喜欢第一种选择。主要是因为第二次要求你每次添加图像时都要制作两份副本(假设你同时支持android和ios)。此外,选项1提供了更好的打字建议,您不会拼错图像名称。

希望这有帮助!