React-本机从AsyncStorage检索API_URL,并使其可在所有应用程序中访问(用于测试目的)

p8h8hvxi  于 2023-01-27  发布在  React
关注(0)|答案(1)|浏览(90)

我正在尝试从AsyncStorage检索API_URL,并使其在所有应用程序中均可访问,存储和检索(在设置屏幕中)工作正常,但当我尝试使用useEffect挂钩在App.js中加载数据时,它返回null。重新加载应用程序不工作,但一旦我保存App.js(使用CTRL-S),它就工作正常。请让我知道正确的方法。

import React, { useEffect, useState } from "react";
import AsyncStorage from "@react-native-async-storage/async-storage";

export default function App() {

  const [hostState, setHostState] = useState(null);

  const getAHostInfoAsync = async () => {
    const hostInfo = AsyncStorage.getItem('host').then(
      setHostState(hostInfo)
    ).then(
      console.log(hostState)
    );

  };

  useEffect(() => {
    getAHostInfoAsync();
  }, []);

  module.exports = {
    host: hostState
  };

}

并在另一个文件中使用:

import App from "../../../App";
const API_URL = App.host;
xnifntxz

xnifntxz1#

我认为您的问题在于使用async/then.而不是async await的方式。我不能100%确定这是您的问题。但是如果我将async/await函数更改为使用async/then,我的IDE会说变量(hostInfo)可能尚未初始化。无论如何,我认为这是比then更好的语法。

const getAHostInfoAsync = async () => {
    const hostInfo = await AsyncStorage.getItem('host')
    setHostState(hostInfo)
    console.log(hostState)
  };

相关问题