本地开发者,

我真的找了很多,但找不到任何适合我需要的东西.

我是个新来的本地人,有个问题.

For example, I am displaying a dismissible badge on my screen -> user dismisses it -> how do I save this decision so the badge won't appear on every start again?

我想写封信.定义了所有首选项的json文件,并在每次启动时读取它.

这是实现它的一种常见方式,还是有其他解决方案.

非常感谢你

推荐答案

2022年2月更新答案

React native正式反对使用其内置的AsyncStorage.最新的解决方案是安装it的社区包.

# Install via NPM
npm install --save @react-native-async-storage/async-storage

# ...or install via YARN
yarn add @react-native-async-storage/async-storage

# ...or install via EXPO
expo install @react-native-async-storage/async-storage

实现是这样的

import AsyncStorage from '@react-native-async-storage/async-storage';

const storeKey = '@storage_Key'
const storeData = async (value) => {
  try {
    await AsyncStorage.setItem(storeKey, value)
  } catch (e) {
    // saving error
  }
}


const getData = async () => {
  try {
    const value = await AsyncStorage.getItem(storeKey)
    if(value !== null) {
      // value previously stored
    }
  } catch(e) {
    // error reading value
  }
}

老生常谈

有很多 Select ,但最常用的是React Native内置AsyncStorage.

示例代码

import { AsyncStorage } from "react-native";
const storeKey = 'myPreference';
storeData = async () => {
  try {
    await AsyncStorage.setItem(storeKey, 'I like to save it.');
  } catch (error) {
    // Error saving data
  }
}

retrieveData = async () => {
  try {
    const value = await AsyncStorage.getItem(storeKey);
    if (value !== null) {
      // We have data!!
      console.log(value);
    }
   } catch (error) {
     // Error retrieving data
   }
}

阅读https://facebook.github.io/react-native/docs/asyncstorage.html页的更多内容

或者你可以重新考虑第三方库,比如:

https://github.com/kevinresol/react-native-default-preference

https://github.com/mCodex/react-native-sensitive-info

React-native相关问答推荐

构建 iOS Expo 应用时出现 React-Native xcodebuild 错误 65

FlatList 总是增长到 100% 高度

React Native 映射未定义不是函数

NPM INSTALL 在 react-native 项目上失败:无法解析 react 和 react-dom 的依赖树

如何在react-navigation 中将drawer抽屉放在标题上?

React Native Child Parent 通信

Google SignIn SDK 因抛出错误而失败,发生不可恢复的登录失败 -catch 错误

Android Studio 为构建设置 node 目录(Cause: error=2, No such file or directory)

在react-native 模块库中找不到 ios 框架头文件

如何在react-navigation 中将props传递给screens/components

使用 Hooks 在功能组件中react-navigation 标题

如何在 React Native 中访问原生 UI 组件的实例方法

mapDispatchToProps:有什么意义吗?

React Native Negative shadowOffset 创建顶部阴影

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.

如何在 react-native 中为在后台杀死的 android 应用程序保持状态

React Native - 为什么我需要 babel 或 webpack?

单击平面列表中的侦听器

无法解析模块react-native-screen

如何更改后退按钮标签,react-navigation