2015-11-09 51 views
6

我需要在会话之间存储一些用户数据,例如设置,登录,令牌等。尝试asyncstorage,但是当我重新启动应用程序,其中的数据被删除。发现了一些引用keychain或NSUserDefaults的模块,但我不知道这个模块对于这个目的有什么好处。
主要功能是即使应用程序被终止并重新启动后,我也可以获取该数据。大多数在iOS上,但如果它也会在Andorid上,那会很好。
有人有过一些经验吗?会话之间的React-native存储数据

编辑:
我试过使用asyncstorage。但是,当你杀死并重新启动应用程序时,它不会执行任何操作。
我的用于存储数据的代码:

AsyncStorage.setItem("prefix", responseData['prefix']) 
AsyncStorage.setItem("api_token", responseData['api_token']) 

和检索数据:

async _checkAutoLogin(){ 
    var prefix; 
    var token; 
    try { 
     prefix = await AsyncStorage.getItem("prefix"); 
     token = await AsyncStorage.getItem("api_token"); 
} catch (error) { 
     AlertIOS.alert('AsyncStorage error: ' + error.message); 
    } 
+0

请分享你如何使用asyncstorage(它返回一个承诺) – Sulliwane

+0

编辑我的答案,并添加一些代码的代码。 –

回答

0

这个工程即使重新启动应用程序后:

_login:function(token){ 
    AsyncStorage.setItem('ApiToken',token, 
    () => this.setState({isLoggedIn:true}), 
     (error) => console.log(error) 
    ); 
    }, 
8

AsyncStorage应该将数据保存到设备中,这样就可以不管,如果您的应用程序之前已经发送到后台或已经凉推出的访问。如果您尝试使用await关键字,我认为您需要做一些额外的设置才能使其运行。 Here's a good article让你一起去。

此外,这取决于你有多少打算与AsyncStorage做,阵营本地网站这样说:

建议您使用抽象的AsyncStorage而不是AsyncStorage的顶部直接用于任何超过因为它在全球范围内运作,因此使用率较低

我写了一个小包装围绕它称为react-native-simple-store刚刚包扎AsyncStorage暴露了一个简约的API,但给你JSON.stringifying和JSON.parsing默认情况下,更复杂的值,因此您不必担心它。

或者如果你最终需要更多的本地数据库there are other modules for that

希望有帮助!