1

我正在处理购物清单,并希望将检查的项目保存在本地存储中。但是,设置 AsyncStorage 并没有为我工作,说 undefined 不是对象

这是我的代码:

import React from 'react';
import { StyleSheet, Dimensions } from 'react-native';
import { Container, Content, List, ListItem, Text, CheckBox, AsyncStorage } from 'native-base';

export default class ShoppingListItem extends React.Component {
  constructor(props) {
    super(props);
    this.saveCheck = this.saveCheck.bind(this)
    this.state = {
      checked: false
    }
  }

  render() {
    return (
      <ListItem style={styles.table}>
        <CheckBox 
          checked={this.state.checked}
          onPress={this.saveCheck}/>
        <Text>{this.props.item[0]} {this.props.item[1]} {this.props.item[2]}</Text>
      </ListItem>
    );
  }

  // componentWillMount () {
  //   AsyncStorage.getItem(this.props.key).then((value) => {
  //      this.setState({checked: value});
  //   }).done();
  // }

  saveCheck () {
    console.log(this.state.checked)
    this.setState({checked: !this.state.checked})
    AsyncStorage.setItem('checked', JSON.stringify(this.state.checked))
  }
}
4

1 回答 1

5

问题在于线路this.props.key

查看 react-native 抛出的这个警告

在此处输入图像描述

因此,将您的道具更改'key'为其他名称,然后一切都应该按预期工作。

AsyncStorage也从'react-native'导入

改变

import { StyleSheet, Dimensions } from 'react-native';

import { StyleSheet, Dimensions, AsyncStorage} from 'react-native';

并从“native-base”中删除 AsyncStorage

于 2016-11-02T07:31:21.560 回答