标签: asyncstorage

React-Native AsyncStorage.clear()在IOS上失败

我正在使用AsyncStorage.clear()它在Android上工作得很好但是当使用iOS平台(真实设备)运行时我收到此错误并且无法在线找到任何关于它的信息.

Error: Failed to delete storage directory.Error Domain=NSCocoaErrorDomain Code=4 "“RCTAsyncLocalStorage_V1” couldn’t be removed." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/281A6456-6CB2-47D4-AD04-3EB26A1B9506/Documents/RCTAsyncLocalStorage_V1, NSUserStringVariant=(
    Remove
), NSUnderlyingError=0x174049480 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
Error: Failed to delete storage directory.Error Domain=NSCocoaErrorDomain Code=4 "“RCTAsyncLocalStorage_V1” couldn’t be removed." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/281A6456-6CB2-47D4-AD04-3EB26A1B9506/Documents/RCTAsyncLocalStorage_V1, NSUserStringVariant=(
    Remove
), NSUnderlyingError=0x174049480 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
    at convertError (http://192.168.1.33.xip.io:8081/index.ios.bundle?platform=ios&dev=true&minify=false:52255:13)
    at http://192.168.1.33.xip.io:8081/index.ios.bundle?platform=ios&dev=true&minify=false:52109:18
    at MessageQueue.__invokeCallback (http://192.168.1.33.xip.io:8081/index.ios.bundle?platform=ios&dev=true&minify=false:2060:16)
    at http://192.168.1.33.xip.io:8081/index.ios.bundle?platform=ios&dev=true&minify=false:1853:15
    at MessageQueue.__guard (http://192.168.1.33.xip.io:8081/index.ios.bundle?platform=ios&dev=true&minify=false:1991:9)
    at MessageQueue.invokeCallbackAndReturnFlushedQueue (http://192.168.1.33.xip.io:8081/index.ios.bundle?platform=ios&dev=true&minify=false:1852:13)
    at t (file:///Applications/React%20Native%20Debugger.app/Contents/Resources/app.asar/js/RNDebuggerWorker.js:1:14632)
Run Code Online (Sandbox Code Playgroud)

ios react-native asyncstorage

10
推荐指数
2
解决办法
3149
查看次数

React Native StackNavigator initialRouteName

在React Native Navigation库中'react-navigation'

我如何通过AsyncStorage设置StackNavigator initialRouteName?

function getInitialScreen() {
    AsyncStorage.getItem('initialScreen')
        .then(screenName => {
            return (screenName)
                ? screenName
                : 'Login';
        })
        .catch(err => {});
}

const Navigator = StackNavigator({
    Splash: { screen: Splash },
    Login: { screen: Login },
    WebPage: { screen: WebPage }
}, {
    initialRouteName: getInitialScreen()
});
Run Code Online (Sandbox Code Playgroud)

reactjs react-native asyncstorage react-navigation

9
推荐指数
3
解决办法
1万
查看次数

在AsyncStorage中正确设置setItem的方法

我想在AsyncStorage.setItem里面用AsyncStorage.getItem。如何以正确的方式做到这一点?

我的代码如下:

createVehicle: function (vehicle, cb) {
    AsyncStorage.getItem('vehicle')
    .then(json => {

        let vehicles = [];

        if (json) {
            vehicles = JSON.parse(json);
            let o_vehicle = filter(vehicles, {autralis_id: vehicle.autralis_id});
            if (o_vehicle.length > 0) {
                cb(o_vehicle[0].id);
                return;
            } else {
                vehicles.push(vehicle);
            }
        } else {
            vehicles.push(vehicle);
        }
        AsyncStorage.setItem('vehicle', JSON.stringify(vehicles), () => {
            cb(vehicle.id + 1)
        });
    }).done();
},
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

react-native asyncstorage

8
推荐指数
2
解决办法
1万
查看次数

我可以向 AsyncStorage 添加侦听器或触发器吗?

我目前正在为我的应用程序的聊天功能编写 react-native。

我使用 Firebase 作为邮箱。由于我不想将聊天数据保存在我们的数据库中,因此我决定将消息保存到设备数据库 AsyncStorage。

所以,步骤是这样的:

1) 用户 B 的设备在 Firebase 上监听他的邮箱变化

2) 用户 A 向 Firebase 上的用户 B 邮箱发送消息

3) 由于 Firebase 侦听器,用户 B 收到了新消息

4) 用户 B 的设备将新消息保存到 AsyncStorage

5) 用户 B 的设备检测到 AsyncStorage 的变化并更新 Chat 的 UI

来到这里,我需要一个监听器来监听 AsyncStorage 的变化,以便 UI 可以相应地更新。

这来到了主题:我可以向 AsyncStorage 添加侦听器或触发器,如 Oracle 数据库中的 DB 触发器吗?

另外,我还想知道是否应该将用户的消息保存在我的服务器数据库中。谢谢

chat firebase react-native asyncstorage

8
推荐指数
1
解决办法
1136
查看次数

如何使用React Native中的AsyncStorage multiGet检索数据

我正在考虑如何在编写的文档中使用React-native AsyncStorage multiGet:

AsyncStorage.multiGet(keys, (err, stores) => {
Run Code Online (Sandbox Code Playgroud)

但这些键应该如何正常?以下是它们在我的应用程序中的设置方式:

AsyncStorage.multiSet([['@BarcodeList', JSON.stringify(scanedList)], ['@ScannedBarcode', gotCode]]);
Run Code Online (Sandbox Code Playgroud)

没关系,但是如何使用multiGet检索数据呢?使用getItem似乎工作,我做错了什么?下面两个(getItem,multiGet).

AsyncStorage.multiGet(["@BarcodeList", "@ScannedBarcode"]).then((scanedList2, scannedBarcode) => {
    //AsyncStorage.getItem("@BarcodeList").then((scanedList2) => {
Run Code Online (Sandbox Code Playgroud)

javascript android react-native asyncstorage

8
推荐指数
1
解决办法
5157
查看次数

使用React Native AsyncStorage存储列表:许多键还是一个?

我想用AsyncStorage存储项目列表.该列表将随着时间的推移而更新.

以下是列表可以处于的状态示例:

[
  { 
    name: "Alice", 
    email: "alice@example.com"
  }, 
  {
    name: "Bob", 
    email: "bob@example.com", 
    address: "30 Madison Ave., NY"
  }
]
Run Code Online (Sandbox Code Playgroud)

现在,似乎有两个选项可用于存储此列表:

  1. 将每个联系人存储在自己的密钥下
  2. 将整个列表存储在一个键下

这两种方法都有优势 - React Native最喜欢什么?

react-native asyncstorage

7
推荐指数
1
解决办法
5519
查看次数

React-native 同步存储解决方案

在原生 iOS 代码中,我可以使用NSUserDefaults来存储和获取数据,这是同步操作。在 react-native 中,提供的是使用AsyncStorage,但我需要一个同步存储的解决方案,比如NSUserDefaults. 我将使用数据获取的结果来确定要显示哪个屏幕,但由于它是异步的,因此在尝试获取持久数据时总是未定义。

react-native asyncstorage

7
推荐指数
1
解决办法
9470
查看次数

如何从 React Native 的 AsyncStorage 填充 Redux 中的 initialState?

我有一个 React Native 应用程序。我将用户名和 uid 存储在 AsyncStorage 中,因此他们不必每次都登录。如何使用这些值填充 initialState。有一些包可以为你做这件事,但看起来这应该是可行的,而没有另一个包的开销。现在初始状态只是空值。

const initialState = {
  uid: "",
  username: "",
};
Run Code Online (Sandbox Code Playgroud)

react-native redux asyncstorage react-native-web

7
推荐指数
1
解决办法
2841
查看次数

使用 AsyncStorage 中的令牌创建 Axios 实例

在我的 React Native App 中,我想创建一个 Axios 实例,以使用从AsyncStorage. 但是,以下Token()始终返回一个对象( Promise )而不是实际令牌,因此“授权”标头类似于[Object object].

import axios from 'react-native-axios'
import AsyncStorage from "@react-native-community/async-storage"

const Token = async () => {
    try {
      await AsyncStorage.getItem("token").then(
        token => token
      );
    } catch (error) {
      return null;
    }
  }

export default axios.create({
      baseURL: 'http://192.168.1.100:8080/api',
      headers: {
        'Authorization': 'Bearer '+ Token(),
        'Content-Type': 'application/json'
      }
}) 
Run Code Online (Sandbox Code Playgroud)

如何获取实际令牌并在 axios 实例中使用它?

async-await react-native asyncstorage axios

7
推荐指数
1
解决办法
4912
查看次数

React Native - 观察 AsyncStorage 值变化?

有没有办法订阅AsyncStorage值的变化?我在一个地方有一个设置,保存在AsyncStorage应用程序中,它会影响所有其他屏幕。我需要观察该值,以便可以更新所有屏幕。我尝试了该getValue方法,但它似乎最初只获得一个值,并且不会在更改时更新。

react-native asyncstorage

7
推荐指数
1
解决办法
6686
查看次数