【发布时间】:2021-11-24 10:04:29
【问题描述】:
我正在使用async storage 来检索我的数据,但如何将它与 useState() 一起使用?
例子:
async function getdata(){
let d= await AsyncStorage.getItem('Name');
return d;
}
export default function App() {
const [name, setName] = useState(() => getdata());
return (<View>...</View>)
}
但这不起作用,因为 getdata() 是异步的,那么我该如何解决这个问题?
编辑:
我忘了说我试过 useEffect() Hook 是这样的:
async function getdata(){
let d= await AsyncStorage.getItem('Name');
console.log('retrieved Data!');
return d;
}
const [name, setName] = useState(()=>0);
useEffect(() => {
getData().then(setName);
console.log('moving on...');
}, []);
但执行顺序是:
“继续……”
'检索数据!'
应该是相反的地方
【问题讨论】:
-
响应编辑,'moving on'首先解析的原因是因为getData是一个异步函数。这意味着程序在移动到下一行之前不会等待 getData 完成执行。这可以。这只是意味着组件将在没有设置名称的情况下“渲染”一次,然后在调用 setName 时再次重新渲染,此时“名称”变量将填充来自 asyncstorage 的任何内容。在这种情况下,不需要在 useState() 中放置回调函数。将其初始化为一些文字就可以了。
标签: javascript reactjs react-native asyncstorage