Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在非字符串的React Native中本地存储数据_Javascript_Reactjs_React Native_Local Storage - Fatal编程技术网

Javascript 如何在非字符串的React Native中本地存储数据

Javascript 如何在非字符串的React Native中本地存储数据,javascript,reactjs,react-native,local-storage,Javascript,Reactjs,React Native,Local Storage,我正在寻找一种在React Native中本地存储对象和数据数组的方法。如何做到这一点?查看异步存储的api: 静态setItem(键:字符串,值:字符串,回调?:?(错误:?错误)=>void) 设置键的值,并在完成时调用回调,如果有错误,还会显示错误。返回承诺对象 如何在React Native中本地存储对象和数组?JSON。stringify({})可用于将数据结构转换为字符串 然后使用JSON.parse()将字符串转换回原始数据结构 您可以为此创建一个很好的服务,以消除整个应用程序中的

我正在寻找一种在React Native中本地存储对象和数据数组的方法。如何做到这一点?查看异步存储的api:

静态setItem(键:字符串,值:字符串,回调?:?(错误:?错误)=>void)
设置键的值,并在完成时调用回调,如果有错误,还会显示错误。返回承诺对象

如何在React Native中本地存储对象和数组?

JSON。stringify({})可用于将数据结构转换为字符串

然后使用JSON.parse()将字符串转换回原始数据结构

您可以为此创建一个很好的服务,以消除整个应用程序中的一些样板代码。在下面的示例中,我使用React Native的内置AsyncStorage API作为“持久”存储工具。根据您的需要进行调整

使用React Native的示例

使用JSON API将对象存储在持久性存储(即React Native的AyncStorage)中,然后检索该值,并将其输出到文本元素中。未经测试

js文件-注意,这个示例对象API提供了一个子集包装器,围绕ReactNative的AsyncStorage API提供的内容,您可以调整它以允许设置多个键,例如,而不是一次设置一个键

//./storage.js
const Storage = {

    getItem: async function (key) {
        let item = await AsyncStorage.getItem(key);
        //You'd want to error check for failed JSON parsing...
        return JSON.parse(item);
    },
    setItem: async function (key, value) {
        return await AsyncStorage.setItem(key, JSON.stringify(value));
    },
    removeItem: async function (key) {
        return await AsyncStorage.removeItem(key);
    }
};
反应本机组件

//Usage...
import React, {Component} from "react";
import { View, Text } from "react-native";
import Storage from "./storage";

class Foo extends Component {

    constructor (props) {

        super(props);

        this.state = {
            greeting: ""
        };
    } 

    async componentDidMount () {

        await Storage.setItem("someObj", {value: "bar", id: 1});

        let obj = await Storage.getItem("someObj");

        this.setState({
             greeting: obj.value // Will be "bar" 
        });

    }

    render () {

         return (
               <View>
                    <Text>{this.state.greeting}</Text>
               </View>
         );
    }
}

最近我写了pleex,你可以看看。 您可以用纯json保存数据,也可以使用类型检查功能创建模式等等。
如果你不想担心我建议的JSON.stringify和JSON.parse,那就谢谢你了。从异步存储中取出一些样板文件。@jasonmerino dude,你的评论应该是最好的答案。等等,使用第三方组件应该是yh接受的答案,什么时候几行香草js就可以了/李安。JSON后丢失括号。StrugI化(value)如何存储和下载PDF文件,请考虑提供更多关于如何使用库的信息,而不只是链接到它。
var StorageService = function  () {};

StorageService.prototype.get = function (key) {
    return JSON.parse(window.localStorage.getItem(key));
};

StorageService.prototype.set = function (key, value) {
    return window.localStorage.setItem(key, JSON.stringify(value));
};