2017-06-06 102 views
0

我想從AsyncStorage獲取存儲值。但它給出null不是一個對象錯誤。 這是我的代碼。null不是一個對象

import React, { Component } from 'react'; 
import { AsyncStorage, Image, View, StatusBar } from 'react-native'; 
import { connect } from 'react-redux'; 
import { Container, Button, H3, Text, Header, Title, Content, Icon, Footer, FooterTab, Left, Right, Body } from 'native-base'; 

import { openDrawer } from '../../actions/drawer'; 
import styles from './styles'; 
import Anatomy from '../anatomy/index.js'; 

const launchscreenBg = require('../../../img/abc.png'); 
const launchscreenLogo = require('../../../img/mob_app_bg.png'); 

var STORAGE_KEY_USER = '@ExpLocal:user'; 

class Home extends Component { // eslint-disable-line 

    componentDidMount() { 
    this._loadInitialState().done(); 
    } 

    async _loadInitialState() { 
    try { 
     var user = await AsyncStorage.getItem(STORAGE_KEY_USER); 
     if (user !== null){ 
     this.setState({selectedUser: user}); 
     this._appendMessage('Logged In User: ' + user); 
     } else { 
     this._appendMessage('Empty'); 
     } 
    } catch (error) { 
     this._appendMessage('AsyncStorage error: ' + error.message); 
    } 
    } 

    getInitialState() { 
    return { 
     selectedUser: null, 
     messages: [], 
    }; 
    } 

    static propTypes = { 
    openDrawer: React.PropTypes.func, 
    } 

    render() { 
    this._loadInitialState().done(); 
    // var loggedUser = this.state.selectedUser; 
    if(this.state.selectedUser !== null){ 
     return (
     <Container style={styles.container}> 
     <Header> 
     <Left> 
     <Button transparent onPress={this.props.openDrawer}> 
     <Icon name="ios-menu" /> 
     </Button> 
     </Left> 
     <Body> 
     <Title>Home</Title> 
     </Body> 
     <Right /> 
     </Header> 
     </Container> 
     ); 
    }else{ 
     return (
     <Anatomy /> 
     ); 
    } 

    } 
} 

function bindActions(dispatch) { 
    return { 
    openDrawer:() => dispatch(openDrawer()), 
    }; 
} 

const mapStateToProps = state => ({ 
    navigation: state.cardNavigation, 
    themeState: state.drawer.themeState, 
    routes: state.drawer.routes, 
}); 

export default connect(mapStateToProps, bindActions)(Home); 

給出以下錯誤 null不是(評價 'this.state.selectedUser')的對象 E:\ REACT_NATIVE_PROJECTS \ NativeBase-的KitchenSink主\ JS \部件\家\ index.js:49: 18 我做錯了什麼?

回答

0

您可以使用像這樣:

AsyncStorage.getItem("STORAGE_KEY_USER").then((value) => { 
    var user = value; 
    //Your functionalities 
}).catch((error) => { 
    //Catch Block 
}); 
+0

你的意思是這樣的異步_loadInitialState(){ AsyncStorage.getItem( 「STORAGE_KEY_USER」),那麼((值)=> { 變種用戶=值; this.setStatus({selectedUser:?用戶}); //您的功能 })。catch((error)=> {Catch Block }); } –

+0

是@NeshanManilka –

0

你可以只檢查變量實際上值與否。換句話說

if(value) {} 

你在哪裏得到真正如果有值或如果沒有。

相關問題