React Native - 异步/等待不起作用 [英] React Native - async/await does not work
本文介绍了React Native - 异步/等待不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以在类之外使用 async/await?例如,我使用 AsyncStorage 来存储访问令牌,并希望在 StackNavigator 初始化之前获取此令牌.
Is it possible to use async/await outside of classes? For example I use AsyncStorage to store access token and want to get this token before StackNavigator will be initialized.
container.js
import React from 'react';
import { StackNavigator } from 'react-navigation';
import PairingView from '../components/PairingView';
import MainView from '../components/MainView';
import { getTokenFromStorageAsync } from '../helpers/asyncStorageHelper';
const accessToken = getTokenFromStorageAsync().done();
console.log(accessToken); <---------- undefined
const AppNavigator = StackNavigator({
PairingRoute: {
screen: PairingView
},
MainRoute: {
screen: MainView
}
}, {
initialRouteName: (accessToken == null) ? 'PairingRoute' : 'MainRoute',
initialRouteParams: {
token: accessToken
}
});
const App = () => (
<AppNavigator />
);
export default App;
asyncStorageHelper.js
import { AsyncStorage } from 'react-native';
export const getTokenFromStorageAsync = async () => {
try {
const value = await AsyncStorage.getItem('@nfs:token');
console.log(value); <---------- access token
if (value != null)
return value;
} catch (err) {
console.error(err);
}
return undefined;
};
推荐答案
解决了问题.
class App extends Component {
constructor(props) {
super(props);
this.state = {
accessToken: 'fetching'
};
this._loadAccessToken();
}
_loadAccessToken = async () => {
const token = await getTokenFromStorageAsync();
this.setState({ accessToken: token });
}
render() {
if (this.state.accessToken === 'fetching')
return null;
const AppNavigator = StackNavigator({
PairingRoute: {
screen: PairingView
},
MainRoute: {
screen: MainView
}
}, {
initialRouteName: (this.state.accessToken == null) ? 'PairingRoute' : 'MainRoute',
initialRouteParams: {
token: this.state.accessToken
}
});
return <AppNavigator />;
}
}
export default App;
这篇关于React Native - 异步/等待不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文