【发布时间】:2021-10-20 20:55:30
【问题描述】:
我需要在应用程序打开时立即从 AsycStorage 访问数据以传递给我的功能之一 WidgetGenerator。但是,似乎没有办法调用getData() 并等待它设置initVals 的值,它只是继续在WidgetGenerator() 中顺序执行代码并将undefined 传递给它返回的组件,因为getData() 还没有回来。此外,当我将 WidgetGenerator 设为异步函数时,它似乎并不喜欢它。我该怎么做才能在加载时访问 AsyncData?
const getData = async () => {
try {
const jsonValue = await AsyncStorage.getItem('@1629349495937')
if (jsonValue != null) {
//console.log(JSON.parse(jsonValue));
initVals = JSON.parse(jsonValue);
}
} catch(e) {
// error reading value
}
}
function WidgetGenerator(props) {
switch (props.args[0]) {
case "heading":
return <UIComponents.UIHeading
text={props.args[1]}
id={props.id}
init={initVals ? initVals[props.id] : undefined}
/>;
case "checkbox":
return <UIComponents.UICheckbox
text={props.args[1]}
id={props.id}
callback={props.callback}
init={initVals ? initVals[props.id] : undefined}
/>;
}
return <View />;
}
return (
<View>
{widgetArray.map((data, index) => <WidgetGenerator key={index} id={index} args={data} callback={collectData}/>)}
<UIComponents.UISubmitButton callback={submitData} />
</View>
);
}
【问题讨论】:
标签: javascript react-native async-await asyncstorage