世博会初始屏幕在 hideAsync() 之前消失

lin*_*nus 5 react-native expo expo-splash-screen

我正在使用 Expo 开发我的第一个 React Native 应用程序,但在启动画面方面遇到了一些问题。

\n

在我的app.json博览会下我设置了以下内容:

\n
{\n  "expo": {\n    "name": "my-iOS-Android-app",\n    "slug": "my-iOS-Android-app",\n    "version": "1.0.0",\n    "orientation": "portrait",\n    "icon": "./assets/icon.png",\n    "splash": {\n      "backgroundColor": "#C808F9"\n    },\n    "owner": "linus",\n    "updates": {\n      "fallbackToCacheTimeout": 0\n    },\n    "assetBundlePatterns": [\n      "**/*"\n    ],\n    "ios": {\n      "supportsTablet": true,\n      "bundleIdentifier": "my.test.app"\n    },\n    "android": {\n      "adaptiveIcon": {\n        "foregroundImage": "./assets/adaptive-icon.png",\n        "backgroundColor": "#FFFFFF"\n      }\n    },\n    "web": {\n      "favicon": "./assets/favicon.png"\n    }\n  }\n} \n
Run Code Online (Sandbox Code Playgroud)\n

我已按照 Expo\xc2\xb4s 网站上的指南进行操作,这是我的代码:

\n
useEffect(() => {\n    async function prepare() {\n      try {\n        await SplashScreen.preventAutoHideAsync();\n        let data = await fetchData();\n        await new Promise(resolve => setTimeout(resolve, 8000));\n        setData(data);\n      } catch (e) {\n        console.warn(e);\n      } finally {\n        setAppIsReady(true);\n      }\n    }\n\n    prepare();\n    // initSorting();\n  }, [])\n\n  const onLayoutRootView = useCallback(async () => {\n    if (appIsReady) {\n      await SplashScreen.hideAsync();\n    }\n  }, [appIsReady]);\n\n  if (!appIsReady) {\n    return null;\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

如您所见,我添加了 8 秒超时。\nexpo 将代码下载到我的手机时弹出紫色屏幕,然后出现 8 秒黑屏。\n我使用 iOS 设备进行测试。

\n

有人可以解释我做错了什么吗?或者我是否误解了 expos\xc2\xb4s 启动画面的目的?

\n

谢谢!

\n