【问题标题】:null is not an objectnull 不是对象
【发布时间】:2017-06-06 11:18:01
【问题描述】:

我正在尝试从 AsyncStorage 中获取存储值。但它给出了 null is not an object 错误。 这是我的代码。

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-master\js\components\home\index.js:49:18 我做错了什么?

【问题讨论】:

    标签: android react-native asyncstorage


    【解决方案1】:

    你可以这样使用:

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

    【讨论】:

    • 你的意思是这样的?async _loadInitialState(){ AsyncStorage.getItem("STORAGE_KEY_USER").then((value) => { var user = value; this.setStatus({selectedUser: user}) ; //你的功能 }).catch((error) => { //Catch 块 }); }
    • 是的@NeshanManilka
    【解决方案2】:

    您可以检查变量是否具有实际值。换句话说

    if( value ) {}
    

    如果有值,则得到 true,如果没有,则得到 false

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 2021-09-11
      • 1970-01-01
      • 2012-02-29
      • 2022-01-05
      • 2021-10-20
      • 2018-08-22
      • 2016-06-08
      • 1970-01-01
      相关资源
      最近更新 更多