2017-09-18 12 views

答えて

0

React Nativeは現時点で必要な作業を行う方法を公開していないため、サードパーティのソリューションを使用する必要があります。

ネイティブのImage.prefetch()を使用する代わりに、高次のコンポーネントモジュールを使用して、<イメージ>をキャッシュ/永続ストレージを処理してアップグレードすることができます。

React Native Image Cache HOC

Tlの、DRコード例:合計ローカルキャッシュは過去15 MBが成長するまで

import imageCacheHoc from 'react-native-image-cache-hoc'; 
const CacheableImage = imageCacheHoc(Image); 

export default class App extends Component<{}> { 
    render() { 
    return (
     <View style={styles.container}> 
     <Text style={styles.welcome}>Welcome to React Native!</Text> 
     <CacheableImage style={styles.image} source={{uri: 'https://i.redd.it/rc29s4bz61uz.png'}} /> 
     <CacheableImage style={styles.image} source={{uri: 'https://i.redd.it/hhhim0kc5swz.jpg'}} permanent={true} /> 
     </View> 
); 
    } 
} 

最初の画像は、キャッシュされた画像が合計まで、第1の最も古い削除する(デフォルトで)キャッシュしますキャッシュは15 MB未満です。

第2のイメージはローカルディスクに永続的に保存されます。人々はこれをあなたのアプリで静的な画像ファイルを送る代わりにドロップとして使用します。その後

あなたはImage.prefetch(のように事前に暖かいキャッシュする場合)

import imageCacheHoc from 'react-native-image-cache-hoc'; 
const CacheableImage = imageCacheHoc(Image); 
CacheableImage.cacheFile('https://i.redd.it/hhhim0kc5swz.jpg') 
    .then(localFileInfo => { 
    console.log(localFileInfo); 

    // Console log outputs: 
    //{ 
    // url: 'https://i.redd.it/rc29s4bz61uz.png', 
    // cacheType: 'cache', //add true as 2nd param to cacheFile() to make permanent 
    // localFilePath: '/this/is/absolute/path/to/file.jpg' 
    //} 

    }); 

あなたが要求したとして、ディスクからそれをクリアしたい:

import RNFetchBlob from 'react-native-fetch-blob'; 
RNFetchBlob.fs.unlink(localFilePath.localFilePath) 
    .then(() => { 
    console.log('file deleted!'); 
    }); 

はこれがあなたのお役に立てば幸い!

+0

質問に答えず、代わりに「これを使用」と答えます。 –

+0

@AdamBarnesの答えは、「標準的なReact Nativeを使ってやろうとしていることはできません。私は明確にするために私の答えを更新しました。 – billmalarky

+0

Downvoteが削除されました。ありがとうございます。 –

関連する問題