これは一般的な問題です.ReactNativeは、値がAsyncStorageから取得される前にレンダリングしようとしています。私はいくつかの場所でこれのための解決策を見てきましたが、何らかの理由でそれはまったく私のためには機能しません。私はReact Native 25.1を使っているからかもしれませんね?それはちょうど「Loading ...」に無期限に立ち往生します。コンソールログをレンダリングしてisLoading(if
メソッドなし)を表示すると、false
が返され、次にtrue
が返されるので、理論上は動作するはずです。しかし、if
メソッドが有効になっていると「読み込み中」が永久に停止し、ログだけがfalseを返します。React NativeがAsyncStorageが値を取得するのを待ちます
import React, { Component } from 'react';
import {
Text,
View,
AsyncStorage
} from 'react-native';
class MainPage extends Component {
constructor(props: Object): void {
super();
this.state = {
isLoading: false,
};
}
componentWillMount() {
AsyncStorage.getItem('accessToken').then((token) => {
this.setState({
isLoading: false
});
});
}
render() {
if (this.state.isLoading) {
return <View><Text>Loading...</Text></View>;
}
// this is the content you want to show after the promise has resolved
return <View/>;
}
});
...あなたはより多くの明確化が必要な場合は、私に教えてください...これを試してみてください、あなたは 'componentDidMount'にコードを入れてみましたか? – zavtra