未经手的承诺拒绝:钥匙的现有价值“最爱”必须是null类型或数组,复活的字符串



我的问题很简单,但我是新手反应本机开发人员。我想用Asyncstorage保存多个元素(我正在使用React-Native-simple商店 一个像包装器一样工作的库,但它是相同的逻辑(,我想显示列表中的键的所有项目,我的代码看起来像:

    constructor(props) {
    super(props)
    this.state = {
      UserInput: "",
    }
    }
SaveValue = () => {
  store.push('Favorites', this.state.UserInput)
  Keyboard.dismiss()
};
FetchValue = () => {
  store.get('Favorites').then((value) => {
    this.setState({
      favs: value
    });
  }).done();
};

与Asynstorage的同一件事,它只是更新我的目标,我想添加一个新的

SaveValue = () => {
  AsyncStorage.setItem("Favorites", this.state.UserInput);
  Keyboard.dismiss()
};
FetchValue = () => {
  AsyncStorage.getItem("Favorites").then((value) => {
    this.setState({
      favs: value
    });
  }).done();
};

这部分是我尝试显示数据的视图,您还可以看到我使用文本输入和两个按钮保存,另一个按钮显示存储的一系列项目

  render() {
    return (
<View>
<TextInput
onChangeText={(UserInput) => this.setState({UserInput})}
placeholder= "Type something"
value={this.state.UserInput} />
<TouchableOpacity
onPress={this.SaveValue}>
<Text>Save</Text>
</TouchableOpacity>
<TouchableOpacity
onPress={this.FetchValue}>
<Text>Fetch</Text>
</TouchableOpacity>
<Text>{this.state.favs}</Text>
</View>
   );
 }

在这一点上,我只能看到一个项目,我试图弄清楚它,看到我必须使用另一种称为push的方法,但是当我更改时,请保存下来,然后推动它扔了一个错误

未经方便的承诺拒绝:关键"收藏夹"的现有值必须为null类型或数组,恢复的字符串。

谢谢!

它将起作用:)

 renderFavorites = () => {
        AsyncStorage.getItem("Favorites").then((favs) => {
            favs.map((fav) => {
                return (<Text> {fav} </Text>);
            });
        });
    }
render() {
    return (
        <View>
            <TextInput
                onChangeText={(UserInput) => this.setState({UserInput})}
                placeholder= "Type something"
                value={this.state.UserInput} />
            <TouchableOpacity
                onPress={this.SaveValue}>
                <Text>Save</Text>
            </TouchableOpacity>
            <TouchableOpacity
                onPress={this.FetchValue}>
                <Text>Fetch</Text>
            </TouchableOpacity>
            {this.renderFavorites()}
        </View>
    );
}

使用JSON:

的解决方案
SaveValue = () => {
  const newFavs = [...this.state.favs, this.state.UserInput];
  this.setState({ favs: newFavs, UserInput: '' }, () => {
      AsyncStorage.setItem("Favorites", JSON.stringify(this.state.favs));
      Keyboard.dismiss()
  });
};
FetchValue = () => {
  AsyncStorage.getItem("Favorites").then((value) => {
    this.setState({
      favs: JSON.parse(value)
    });
  }).done();
};

最新更新