首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在setItem中使用AsyncStorage

无法在setItem中使用AsyncStorage
EN

Stack Overflow用户
提问于 2017-11-25 19:52:21
回答 2查看 347关注 0票数 3

我不能用setItem和AsyncStorage。以下是我的密码。因此,我从一个TextInput中获取状态名称,然后将其存储在AsyncStorage onPress of TouchableOpacity中。我搞错了:

代码语言:javascript
复制
import React, { Component } from 'react';
import { View, Text, StyleSheet, TextInput, TouchableOpacity} from 'react-native';

class AsyncStorage extends Component {

    constructor(props) {
        super(props);
        this.state = {
            name:''
        }
        //this.asyncSetName = this.asyncSetName.bind(this)   //tried this too.
   };

    asyncSetName(){
        let name = this.state.name
        AsyncStorage.setItem('name', name);
    }

    render(){
        <View>
            <TextInput
                placeholder='Set Name here'
                onChangeText={(name) => this.setState({name})}
                value={this.state.name}
                autoCorrect={false}
            ></TextInput>

            <TouchableOpacity
                onPress={this.asyncSetName.bind(this)}
            >
                <Text>SetName</Text>
            </TouchableOpacity>
        </View>
    }
}

我做错了什么?请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-25 20:07:53

您需要从AsyncStorage中导入react-native

代码语言:javascript
复制
import { View, Text, StyleSheet, TextInput, TouchableOpacity , AsyncStorage} from 'react-native';

您还需要保持asyncSetName函数的绑定。

取消注释这一行

代码语言:javascript
复制
this.asyncSetName = this.asyncSetName.bind(this)

此外,正如@Chris所发现的,您需要更改类名以区别于AsyncStorage

票数 4
EN

Stack Overflow用户

发布于 2017-11-25 20:56:21

  1. 正如@Amir所说,您需要从AsyncStorage中导入react-native,并按照他的建议保持绑定。
  2. 此时,您可能也希望将类重命名为AsyncStorage以外的其他内容
  3. 或者,您可能希望命名您的AsyncStorage键。在密钥前面放置一个@AppName是很常见的,所以您的最后一个键将是@AppName${this.state.name}。但同样,这是可选的,只是惯例而已。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47489936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档