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 应用程序中的谷歌地图中显示附近的餐馆。当我调用 Google API 附近搜索时,它会抛出状态:'ZERO_RESULTS'