@kevinwolf/use-expo-asset-loader
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

PRs Welcome All Contributors All Contributors Build Status MIT License

version downloads

🎣 @kevinwolf/use-expo-asset-loader

React Hook to load and cache assets when using Expo

The problem

Caching assets in Expo can be a little verbose and repetitive task if you maintain more than one project at the same time.

This solution

This package export a single hook that abstracts the process of preloading and caching the assetts you need on your Expo application.

Installation

This package is distributed via NPM. Install it as a dependency on your project.

yarn add @kevinwolf/use-expo-asset-loader

IMPORTANT: Make sure you have installed react@>=16.8.0 to use React Hooks.

Usage

import React from "react";
import { ScrollView, Text, Image } from "react-native";
import { AppLoading } from "expo";
import useExpoAssetLoader from "@kevinwolf/use-expo-asset-loader";

const images = [
  require("./assets/images/local-image.png"),
  "https://images.pexels.com/photos/2157841/pexels-photo-2157841.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260",
  "https://images.pexels.com/photos/2108227/pexels-photo-2108227.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260",
  "https://images.pexels.com/photos/2123337/pexels-photo-2123337.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"
];

const fonts = {
  roboto: require("./assets/fonts/roboto.ttf")
};

export default function App() {
  const resourceLoader = useAssetLoader({ images, fonts });

  if (!resourceLoader.isReady) {
    return <AppLoading {...resourceLoader.getAppLoadingProps()} />;
  }

  return (
    <ScrollView
      contentInsetAdjustmentBehavior="always"
      contentContainerStyle={{ alignItems: "center", paddingVertical: 20 }}
    >
      <Text style={{ fontFamily: "roboto" }}>Images</Text>
      {images.map(image => (
        <Image
          key={image}
          source={typeof image === "string" ? { uri: image } : image}
          style={{ height: 200, marginTop: 20, width: "100%" }}
        />
      ))}
    </ScrollView>
  );
}

Contributors

Kevin Wolf
Kevin Wolf

💻 📖 🚇

If you have any question, suggestion or recommendation, please open an issue about it.

If you decided you want to introduce something to the project, please read the contribution guidelines first.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @kevinwolf/use-expo-asset-loader

Weekly Downloads

3

Version

1.0.0

License

MIT

Unpacked Size

9.22 kB

Total Files

6

Last publish

Collaborators

  • kevinwolf