不幸的是,RN无法将字符串变量用作require()的参数。因此,如果您需要创建一个简单的3x3记忆游戏,那么您需要在每个正方形上渲染与本地文件夹不同的图像:算了吧。
我正在尝试为此创建解决方法:将文件从src / assets /*.**复制到文档文件夹。但这不起作用。
我的应用程序的结构如下:
/root folder
+---/android
+---/ios
+---/src
+---/assets
+----/x.png
+----/y.png
+---/index.js
在index.js上,我有以下代码行:
RNFetchBlob.fs.cp("bundle-assets://../../assets/x.png",
RNFetchBlob.fs.dirs.DocumentDir +'/x.png')
.then(() => { alert('done') })
.catch((e) => { alert(e) })
我正在使用react-native-fetch-blob复制文件,因此复制后我可以使用source = {uri:myFile}并动态加载图像。
实际上,此代码不会引发错误,并在目标位置创建零长度的文件。有任何线索吗?
答案 0 :(得分:0)
好吧,您不能在require中动态更改字符串,但是可以动态更改图像的来源,我相信这将是针对您情况的更简单的解决方法。例如,您可以为以下内容设置要求选择器:
let randomNumber = Math.floor((Math.random() * 10)/2);
let imageSource = null;
switch (randomNumber) {
case 0:
imageSource = require('./image1.jpg');
break;
case 1:
imageSource = require('./image2.jpg');
break;
case 2:
imageSource = require('./image3.jpg');
break;
case 3:
imageSource = require('./image4.jpg');
break;
default:
imageSource = require('./image5.jpg');
break;
}
然后将您的图片中的imageSource与:
<Image source={imageSource} />