Реагировать-Native- путь к кэшированному изображению - PullRequest
0 голосов
/ 29 января 2019

Может быть, мой вопрос будет звучать глупо, но вот он ...

Как мы можем получить путь к кэшированному изображению (как в iOS, так и в Android)?

Вот мой пример использования: Я представляю в своем приложении представление со списком изображений из Интернета -> Я получаю массив URL-адресов из API поиска клиентов Google на основе предоставленных пользователем ключевых слов ...

<FlatList
   style={{ width: '100%' }}
   data={this.state.suggestions}
   numColumns={2}
   renderItem={(img) => {
     return (
         <TouchableOpacity onPress={() => this.selectImageHandler(img.item)} >
            <Image source={{ uri: img.item.link }} />
         </TouchableOpacity>
       )
    }}
    keyExtractor={(item, index) => index.toString()}
/>

Результат выглядит следующим образом:

enter image description here

Затем пользователь нажимает на изображение, чтобы выбрать его, что затемнеобходимо сохранить это изображение в папке приложения ( PictureDir / myappfolder / в Android, DocumentDir / myappfolder / в iOS) ...

Что я делаю правильноТеперь, когда изображение выбрано, я загружаю его снова:

selectImageHandler = (img) => {
   // (... pre code ...)
   RNFS.downloadFile({
     fromUrl: img.link, // e.g. "http://www.url.to/the/picture.png
     toFile: uri,  // e.g. "file://"+PictureDir+ "/myAppFolder/picturename.jpg"
   }).promise.then( res => {
   // (... post code ...)
}

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

Итак, снова возникает мой вопрос, есть ли способ узнать, где изображение было сохранено в кэше, так что когда пользователь нажал на изображение, чтобы сохранить его, оно не загрузит его снова, а скорее переместит это из папки кеша в папку приложения?

Имею ли я какой-то смысл?Или перезагружается правильный подход?

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...