AsyncStorageにセッションデータがある場合はロードしますが、コンポーネントがマウントされてundefinedとしてmainContainerに送信された後にロードされています。まずデータをロードしてから送信しますMainContainerAsyncStorage Reactネイティブセッション
export default class AppContainer extends Component<{}> {
constructor(props) {
super(props);
this.state = {
data: this.props.data,
authtoken: this.props.authtoken,
sucursal: this.props.sucursal
};
}
componentWillMount() {
if(AsyncStorage.getItem('authtoken') !== null){
this.getDataFromStorage();
}
}
async getDataFromStorage() {
AsyncStorage.getItem('authtoken').then((token) => {
this.setState({ authtoken: token });
console.log(this.state.authtoken);
});
AsyncStorage.getItem('data').then((dataStorage) => {
this.setState({ data: JSON.parse(dataStorage) });
console.log(this.state.data);
});
}
componentDidMount() {
console.log(this.state.data);
console.log(this.state.authtoken);
}
render(props) {
return (
<View style={styles.bigContainer}>
<Header/>
<MainContainer data={this.state.data} authtoken={this.state.authtoken} sucursal={this.state.sucursal}/>
</View>
);
}
}
[ネイティブAsyncStorageがレンダリング後にデータをフェッチする]の可能な複製(https://stackoverflow.com/questions/33553112/react-native-asyncstorage-fetchches-data-after-rendering) – JSnow