React Native - 让 return() 等到变量被定义

React Native - let return() wait until variable is defined

我以异步方式获取数据,然后使用 {data}.

render() 函数中显示它

现在我的问题是,如何让 render() 函数等待变量被定义?目前要么占位符变量没有改变,要么永远不会到达。

这是我的代码,

let [data] = useState();

    let storeData = async (value) => {
        try {
            await AsyncStorage.setItem('locatie', value)
        } catch (e) {
            console.log(e)
        }
    }

    let getInfo = async () => {
        data = await AsyncStorage.getItem('locatie');
        return data;
    }

    useEffect(() => {
        getInfo().then(r => console.log('getInfo called, data var = ' + data))
    })

    console.log('return() initiate, data var = ' + data)

并在此处显示:

<TextInput value={data !== undefined ? data : 'placeholder'} onChangeText={(value) => storeData(value)}/>

显然,由于它是异步的,render() 发生在函数之前。

如有任何帮助,我们将不胜感激。请不要喷我第一次使用 React Native :)

另外,请注意它在一个函数中,我没有使用 类 也不会使用它们。

而不是let [data] = useState();const [data, setData] = useState(); 并在 then() 内更新 useEffect 钩子内的状态 在你的情况下,在承诺 returns 一些数据之后。

您应该了解有关使用 React Hooks 的更多信息。无论如何,您可以参考下面的问题。

const [data, setData] = useState('');

const storeData = async (value) => {
  try {
    setData(value);
    await AsyncStorage.setItem('locatie', value);
  } catch (e) {
    console.log(e);
  }
};

const getInfo = async () => {
  const res = await AsyncStorage.getItem('locatie');
  setData(res);
};

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