因此,在我的react-native项目中出现了一个非常常见的情况:在路由器挂载之前,检查用户是否具有JWT(Json Web Token)以进行身份验证。使用AsyncStorage检查React Native中的Json Web Token
这很容易在阵营:
const token = localStorage.getItem()
if (token !== null) store.dispatch(checkTokenSuccess())
但反应母语使用AsyncStorage
代替localStorage
和异步功能已困扰了我这么多。我无法在App
组件中使用异步等待,因为任何使用async
关键字的函数都将始终返回promise,而不是反应组件。
这里是我的代码,很显然,它的分解:
AsyncStorage.getItem('JWT')
.then((jwt) => {
if (jwt !== null) {
store.dispatch(checkJwtSuccess());
}
});
const App =() => (
<Provider store={store}>
<MainRouter />
</Provider>
);
应用始终呈现前智威汤逊是牵强。
如何让应用程序组件(我的整个应用程序的根)等到jwt获取诺言已解决?
编辑:
由于@zerkms指出,JavaScript不阻塞。然后,我能想到的唯一解决方案是将应用程序变成React类并使用componentWillMount()
,但这会使App
组件变得笨重。有更好的解决方案
'await'不阻塞,因此,它的工作原理完全一样,你实现它。 – zerkms
@zerkms感谢您的评论!但是,等待的目的是什么?而且,如果我想在这里阻止,我应该采取什么方法? –
您无法使用javascript进行阻止。 – zerkms