Скопируйте локальные файлы в папку документов - PullRequest
0 голосов
/ 08 ноября 2018

к сожалению, RN не способны использовать строковые переменные в качестве параметра для require (). Так что, если вам нужно создать простую игру памяти 3х3, в которой на каждом квадрате вам нужно визуализировать другое изображение из локальной папки: забудьте об этом.

Я пытаюсь создать обходной путь для этого: Скопируйте файлы из моего 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) })

Я использую Reaction-native-fetch-blob для копирования файла, поэтому после копирования я могу использовать source = {uri: myFile} и загружать изображения динамически.

На самом деле этот код не генерирует ошибки и создает файл нулевой длины в месте назначения. Любая подсказка?

1 Ответ

0 голосов
/ 08 ноября 2018

Ну, вы не можете динамически изменить строку в требовании, но вы можете динамически изменить источник изображения, я считаю, что это будет более простой обходной путь для вашей ситуации. Например, вы можете настроить селектор на что-то вроде этого:

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;
}

Затем используйте этот источник изображения в вашем изображении с:

<Image source={imageSource} />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...