54

我注意到由于redux-persist,我在调试我在react-native中坚持的redux操作浪费了一定的时间。有时我只想擦除 AsyncStorage 以节省一些开发时间并尝试使用新数据。AsyncStorage

编辑:最好的情况下,解决方案应该适用于模拟器和真实设备、iOS 和 Android。对于不同的平台,可能有不同的解决方法。

谢谢

4

6 回答 6

42

尝试使用清除所有客户端、库等的clear()函数AsyncStorage

于 2016-09-06T09:52:07.190 回答
30
clearAsyncStorage = async() => {
    AsyncStorage.clear();
}

这个功能可以应用在代码库的任何地方来清除AsyncStorage。例如,下面是如何在<Button>组件上调用它。

<Button onPress={this.clearAsyncStorage}>
  <Text>Clear Async Storage</Text>
</Button>
于 2018-09-13T04:28:51.213 回答
16

您可以轻松清除 AsyncStorage,而无需接触您的源代码。使用反应原生调试器;并在 devtools 控制台类型中

$reactNative.AsyncStorage.clear();

或者在 RN 的正常调试器中调用它,clear()你可以把它放进去......

if (__DEV__) {
   global.clear = () => {
     AsyncStorage.clear().then(() => console.log('Cleared'))
   }
}
于 2019-06-03T12:31:53.040 回答
10

恕我直言,所有提到AsyncStorage.clear()的答案都是错误的,因为正如文档所说:

擦除所有客户端、库等的所有 AsyncStorage。您可能不想调用它;使用 removeItem 或 multiRemove 仅清除您应用的密钥。

正确答案可以在这里找到:

这是一个简单的方法:

clearAllData() {
    AsyncStorage.getAllKeys()
        .then(keys => AsyncStorage.multiRemove(keys))
        .then(() => alert('success'));
}
于 2021-01-27T19:09:43.767 回答
5

redux-persist带有purge()回调。如果您愿意,您可以在某个地方的调试菜单中调用它。

于 2016-09-06T13:56:15.340 回答
0

使用 AsyncStorage 给我带来了参考错误:

ReferenceError: AsyncStorage is not defined

我终于在 React Native Debuguer文档中找到了关于

$reactNative.*

(对于 RN >= 0.56)

这意味着这个片段会清除我所有的本地存储:

clearAllData = () => {
    $reactNative.AsyncStorage.getAllKeys()
        .then(keys => $reactNative.AsyncStorage.multiRemove(keys))
        .then(() => alert('success'));
}

然后就clearAllData();

于 2021-10-23T07:00:40.483 回答