React Native - 我想在以前的数组中推送新项目,如连接或推送

Posted

技术标签:

【中文标题】React Native - 我想在以前的数组中推送新项目,如连接或推送【英文标题】:React Native - i want to push new item in a previous array like concate or push 【发布时间】:2021-12-12 19:15:31 【问题描述】:

我尝试了以下方法,其中国家是我想要推送/添加到预先存在的国家的新项目,使用文本输入和连接到以前的数组数据,像这样。

例如

 saveData = async () => 
       
        try 
            let countries = AsyncStorage.getItem('countries');
            AsyncStorage.setItem('countries', countries.concat(this.state.country));
            alert('Data successfully saved')

            console.log('countries',countries)                      
         catch (e) 
            alert(e)
        
        
    

//我尝试了很多解决方案..

var countries = await AsyncStorage.getItem('countries'); AsyncStorage.setItem('countries', countries += JSON.stringify(country));

//我的输出是这样的 例如:“姓名”“电子邮件”“地址”

表示没有逗号,没有括号,如数组

我想要这样的输出,例如 ['name','email','address']

我尝试了很多解决方案,但都没有得到结果。有人可以帮帮我吗?

【问题讨论】:

您可能没有将数组设置为异步存储。 【参考方案1】:

希望对你有用

const saveData = async () => 
try 
  let countries = AsyncStorage.getItem("countries")
  if (countries) 
    countries = JSON.parse(countries)
    AsyncStorage.setItem(
      "countries",
      JSON.stringify(countries.push(this.state.country))
    )
   else
    AsyncStorage.setItem("countries", JSON.stringify([this.state.country]))

  alert("Data successfully saved")
  console.log("countries", countries)
 catch (e) 
  alert(e)


【讨论】:

【参考方案2】:

AsyncStorage 只能存储string 数据。文档中指出了这一点。 Usage | AsyncStorage

Async Storage 只能存储字符串数据,所以为了存储对象数据需要先序列化。对于可以序列化为 JSON 的数据,您可以在保存数据时使用 JSON.stringify(),在加载数据时使用 JSON.parse()。

如果要存储数组或对象,则需要将其转换并存储为 json。当您想要检索该数据时,您只需要解析它并再次将其转换为数组,就像文档说的那样。

 saveData = async () => 
    
    try 
        let countries = AsyncStorage.getItem('countries');
        if (countries) countries = JSON.parse(countries);

        AsyncStorage.setItem('countries', JSON.stringify(countries.concat(this.state.country)));

        alert('Data successfully saved')

        console.log('countries', countries)                      
     catch (e) 
        alert(e)
    
    

【讨论】:

另外,您当前的“国家”数据不适用于 JSON.parse,因此您需要在执行此操作之前将其清除,或者在继续解析/字符串化之前检查它是否为 json 对象。

以上是关于React Native - 我想在以前的数组中推送新项目,如连接或推送的主要内容,如果未能解决你的问题,请参考以下文章

在 react-native 中迭代 JSON 数组

如何在 React Native 中对数组进行分组

如何在 React Router v5 中推送到历史记录?

如何在 React Router v5 中推送到历史记录?

我想在我的 React Native 应用程序中的谷歌地图中显示附近的餐馆。当我调用 Google API 附近搜索时,它会抛出状态:'ZERO_RESULTS'

React + React Native入门套件