React Native: всплывающее окно с изображением при первом запуске, несмотря на использование предварительно загруженных лIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 React Native: всплывающее окно с изображением при первом запуске, несмотря на использование предварительно загруженных л

Сообщение Anonymous »

У меня серьезно застряла ошибка в приложении RN Expo, и я не могу понять, что я делаю не так.
Последние два дня я пытаюсь исправьте ошибку, из-за которой все мои изображения всплывают примерно через полсекунды после рендеринга моих страниц, когда пользователь впервые заходит на них после загрузки/перезагрузки приложения.
Во-первых, Я подумал, что причина этого может быть в том, что изображения, которые я использую, слишком велики, поэтому я временно, в целях отладки, заменил их небольшими веб-страницами, которые я уже без проблем использовал в другом проекте. Оказалось, что это не так.
Затем я попробовал предварительно загрузить изображения, используя код, представленный в документации Expo. Это вообще ничего не изменило.
Я также, увидев такое предложение в другой теме, сделал сборку для разработки, чтобы посмотреть, исправит ли она это - не помогло.
Вот ссылка на мой репозиторий на GitHub, если кто-то захочет посмотреть: https://github.com/irolinski/Well_CBT
Вот гифка как выглядит ошибка: https://gifyu.com/image/SyL5p
Вот два компонента, на которых я сосредоточился: второй — просто случайный, который я Я добавил изображения в.
_layout.tsx
import { useFonts } from "expo-font";
import { Stack } from "expo-router";
import * as SplashScreen from "expo-splash-screen";
import { useEffect, useState } from "react";
import { useColorScheme } from "@/hooks/useColorScheme";
import { Provider as StateProvider } from "react-redux";
import { store } from "@/state/store";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import { Asset } from "expo-asset";

// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();

function cacheImages(images: any[]) {
return images.map((image) => {
if (typeof image === "string") {
return Image.prefetch(image);
} else {
return Asset.fromModule(image).downloadAsync();
}
});
}

export default function RootLayout() {
const [fontsLoaded] = useFonts({
Inter: require("../assets/fonts/Inter-Standard.ttf"),
InterItalic: require("../assets/fonts/Inter-Italic.ttf"),
KodchasanRegular: require("../assets/fonts/Kodchasan-Regular.ttf"),
KodchasanMedium: require("../assets/fonts/Kodchasan-Medium.ttf"),
});

const [imagesLoaded, setImagesLoaded] = useState(false);

// Load any resources or data that you need before rendering the app
useEffect(() => {
async function loadResourcesAndDataAsync() {
try {
SplashScreen.preventAutoHideAsync();

const imageAssets = cacheImages([
require("../assets/images/affirmation-images/California-backyard-1.webp"),
require("../assets/images/affirmation-images/California-backyard-2.webp"),
require("../assets/images/affirmation-images/California-backyard-3.webp"),
require("../assets/images/affirmation-images/California-backyard-4.webp"),
require("../assets/images/affirmation-images/english-countryside-1.webp"),
require("../assets/images/affirmation-images/english-countryside-2.webp"),
require("../assets/images/affirmation-images/english-countryside-3.webp"),
require("../assets/images/affirmation-images/english-countryside-4.webp"),
]);

await Promise.all([...imageAssets]);
console.log("images cached");
} catch (err) {
console.warn(err);
} finally {
setImagesLoaded(true);
SplashScreen.hideAsync();
}
}

loadResourcesAndDataAsync();
}, []);

if (!imagesLoaded || !fontsLoaded) {
return null;
}

return (












);
}

app/(tabs)/Tools.tsx
import React from "react";
import { View } from "react-native";
import FrameMenu from "@/components/FrameMenu";
import Text from "@/components/global/Text";
import ToolCard from "../../components/ToolCard";

const Tools = () => {
return (


Classic



Relax


Distract yourself




);
};

export default Tools;


Подробнее здесь: https://stackoverflow.com/questions/791 ... cal-images
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»