Javascript 如何预加载本地图像?

Javascript 如何预加载本地图像?,javascript,react-native,Javascript,React Native,我正在尝试在开始导航其他屏幕之前预装所有这些图像。但我不知道如何实施它。请帮忙 import React from "react"; import { Provider } from "react-redux"; import navigationServices from "./src/helper/navigationServices"; import store from "./src/redux/store"; import RootNavigation from "./src/root

我正在尝试在开始导航其他屏幕之前预装所有这些图像。但我不知道如何实施它。请帮忙

import React from "react";
import { Provider } from "react-redux";
import navigationServices from "./src/helper/navigationServices";
import store from "./src/redux/store";
import RootNavigation from "./src/rootNavigation";


const images = [
  require('./assets/icons/back.png'),
  require('./assets/icons/plants.png'),
  require('./assets/icons/seeds.png'),
  require('./assets/icons/flowers.png'),
  require('./assets/icons/sprayers.png'),
  require('./assets/icons/pots.png'),
  require('./assets/icons/fertilizers.png'),
  require('./assets/images/plants_1.png'),
  require('./assets/images/plants_2.png'),
  require('./assets/images/plants_3.png'),
  require('./assets/images/explore_1.png'),
  require('./assets/images/explore_2.png'),
  require('./assets/images/explore_3.png'),
  require('./assets/images/explore_4.png'),
  require('./assets/images/explore_5.png'),
  require('./assets/images/explore_6.png'),
  require('./assets/images/illustration_1.png'),
  require('./assets/images/illustration_2.png'),
  require('./assets/images/illustration_3.png'),
  require('./assets/images/avatar.png'),
];

const App = () => (
  <Provider store={images}>
    <RootNavigation
      ref={navRef => navigationServices.setTopLevelNavigator(navRef)}
    />
  </Provider>
);

export default App;
从“React”导入React;
从“react redux”导入{Provider};
从“/src/helper/navigationServices”导入导航服务;
从“/src/redux/store”导入存储;
从“/src/RootNavigation”导入RootNavigation;
常量图像=[
需要(“./assets/icons/back.png”),
需要(“./assets/icons/plants.png”),
需要('./assets/icons/seeds.png'),
需要(“./assets/icons/flowers.png”),
需要(“./assets/icons/sprayers.png”),
需要(“./assets/icons/pots.png”),
需要('./assets/icons/factors.png'),
要求(“./assets/images/plants_1.png”),
要求(“./assets/images/plants_2.png”),
要求(“./assets/images/plants_3.png”),
需要(“./assets/images/explore_1.png”),
要求(“./assets/images/explore_2.png”),
要求(“./assets/images/explore_3.png”),
要求(“./assets/images/explore_4.png”),
要求(“./assets/images/explore_5.png”),
需要(“./assets/images/explore_6.png”),
要求('./资产/图像/插图_1.png'),
要求('./资产/图像/插图_2.png'),
要求('./资产/图像/插图_3.png'),
需要(“./assets/images/avatar.png”),
];
常量应用=()=>(
navigationServices.setTopLevelNavigator(navRef)}
/>
);
导出默认应用程序;

我试图从redux将常量图像放入提供程序中,但它无法加载

最好的选择是将它们预加载到componentDidMount或useEffect挂钩中

import avatar from 'assets/avatar.png'
import plants from 'assets/plants.png'
import seeds from 'assets/seeds.png'

useEffect(() => {
  imageList = [avatar, plants, seeds]
  imageList.forEach((image) => {
    new Image().src = image
  });
}, [])

最好的选择是在componentDidMount或useEffect钩子中预加载它们

import avatar from 'assets/avatar.png'
import plants from 'assets/plants.png'
import seeds from 'assets/seeds.png'

useEffect(() => {
  imageList = [avatar, plants, seeds]
  imageList.forEach((image) => {
    new Image().src = image
  });
}, [])

要预加载的图像列表:

// Preload images with require();
const images = {
  'icon.png': require('./icon.png'),
  'orbs-1.png': require('./orbs-1.png'),
  'orbs-2.png': require('./orbs-2.png'),
  'orbs-3.png': require('./orbs-3.png'),
  'survey-1.png': require('./survey-1.png'),
};
图像处理器:

// Convert image refs into image objects with Image.resolveAssetSource
loadImages(images) {        
    return Promise.all(Object.keys(images).map((i) => {
        let img = {
            ...Image.resolveAssetSource(images[i]),
            cache: 'force-cache'
        };

        return Image.prefetch(img);
    }));
}
用法:

loadImages(images).then((results) => { /* do something with the image objects */ });

要预加载的图像列表:

// Preload images with require();
const images = {
  'icon.png': require('./icon.png'),
  'orbs-1.png': require('./orbs-1.png'),
  'orbs-2.png': require('./orbs-2.png'),
  'orbs-3.png': require('./orbs-3.png'),
  'survey-1.png': require('./survey-1.png'),
};
图像处理器:

// Convert image refs into image objects with Image.resolveAssetSource
loadImages(images) {        
    return Promise.all(Object.keys(images).map((i) => {
        let img = {
            ...Image.resolveAssetSource(images[i]),
            cache: 'force-cache'
        };

        return Image.prefetch(img);
    }));
}
用法:

loadImages(images).then((results) => { /* do something with the image objects */ });

但在加载图像后如何导航到其他屏幕?但在加载图像后如何导航到其他屏幕?谢谢。。但是,如何在加载图像后导航到其他屏幕?我的理解是,一旦您预加载图像,就应该在导航组件中进行预编码。。但如何在加载图像后导航到其他屏幕?我的理解是,一旦预加载图像,导航组件中就应该有预编码