import React, {useState, useCallback} from "react"; import {ActivityIndicator, Text, View, ScrollView, StyleSheet, SafeAreaView, Button, Image, Dimensions} from "react-native"; import {useBasement} from "react-native-basement"; import {json} from "react-native-basement/dist/options/fs"; import {base64} from "react-native-basement/dist/getters/base64"; const fs = json({limit: 1}); const styles = StyleSheet.create({ flex: {flex: 1}, bold: {fontWeight: "bold"}, padding: {padding: 10}, }); const CachedImage = ({ source: {uri: requestedUri}, ...extraProps }) => { const [loading, uri, error] = useBasement(requestedUri, base64, fs); if (loading || error) { (!!error) && console.warn(error); return ( ); } return ( ); }; export default ({ ...extraProps }) => { const [possibleUris] = useState(() => [[3000,2000]] .map( ([w, h]) => `https://unsplash.it/${w}/${h}` )); const [uris, setUris] = useState([]); const onPress = useCallback( () => setUris( [...uris, possibleUris[Math.floor(possibleUris.length * Math.random())]], ), [setUris, uris], ); return ( {uris.map( (uri, i) => ( ), )}