From 84066900637fedf2ea2039288165c7f3257db33b Mon Sep 17 00:00:00 2001 From: Louis-C7 <972339262@qq.com> Date: Wed, 15 Nov 2023 16:10:52 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0flexible-alerts=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 5 +++-- zh-cn/picker.md | 2 +- zh-cn/react-native-slider.md | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 99d1b244..f744cd03 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,6 @@ - @@ -104,7 +103,7 @@ - > + @@ -114,5 +113,7 @@ + + diff --git a/zh-cn/picker.md b/zh-cn/picker.md index 65b73c2c..56fc9b86 100644 --- a/zh-cn/picker.md +++ b/zh-cn/picker.md @@ -12,7 +12,7 @@ ## 安装与使用 -目前 React-Native-OpenHarmony(RNOH) 三方库的 npm 包部署在私仓,需要通过 github token 来获取访问权限。 +> [!tip] 目前 React-Native-OpenHarmony(RNOH) 三方库的 npm 包部署在私仓,需要通过 github token 来获取访问权限。 在与 `package.json` 文件相同的目录中,创建或编辑 `.npmrc` 文件以包含指定 GitHub Packages URL 和托管包的命名空间的行。 将 TOKEN 替换为 RNOH 三方库指定的 token。 diff --git a/zh-cn/react-native-slider.md b/zh-cn/react-native-slider.md index b4d15667..e2fed193 100644 --- a/zh-cn/react-native-slider.md +++ b/zh-cn/react-native-slider.md @@ -12,7 +12,7 @@ ## 安装与使用 -目前 React-Native-OpenHarmony(RNOH) 三方库的 npm 包部署在私仓,需要通过 github token 来获取访问权限。 +> [!tip] 目前 React-Native-OpenHarmony(RNOH) 三方库的 npm 包部署在私仓,需要通过 github token 来获取访问权限。 在与 `package.json` 文件相同的目录中,创建或编辑 `.npmrc` 文件以包含指定 GitHub Packages URL 和托管包的命名空间的行。 将 TOKEN 替换为 RNOH 三方库指定的 token。 -- Gitee From 1318ede67a69bdbe1d6dc8546e332498c893b661 Mon Sep 17 00:00:00 2001 From: Louis-C7 <972339262@qq.com> Date: Wed, 15 Nov 2023 16:54:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/logo.ico | Bin 9662 -> 24838 bytes img/react.svg | 2 +- index.html | 7 +------ 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/img/logo.ico b/img/logo.ico index ab7dccabe8e3669251223047e7660c853f5dc5a4..5c125de5d897c1ff5692a656485b3216123dcd89 100644 GIT binary patch literal 24838 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 \ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index f744cd03..0877b41d 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ - + @@ -94,11 +94,6 @@ - - - - - -- Gitee From 9e94448b2509732442308de395e34ce30908ebf0 Mon Sep 17 00:00:00 2001 From: Louis-C7 <972339262@qq.com> Date: Thu, 16 Nov 2023 10:14:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0async-storage=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=92=8C=E8=AF=84=E8=AE=BA=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +- _sidebar.md | 1 + index.html | 20 ++++ zh-cn/README.md | 10 +- zh-cn/async-storage.md | 224 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 259 insertions(+), 6 deletions(-) create mode 100644 zh-cn/async-storage.md diff --git a/README.md b/README.md index 47f8f8d9..3384dea4 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,17 @@ ## 概述 -该文档旨在帮助开发者在OpenHarmony平台使用React Native OpenHarmony的第三方库,并呈现每个三方库的信息。 +该文档旨在帮助开发者在 OpenHarmony 平台使用 React Native OpenHarmony 的第三方库,并呈现每个三方库的信息。 ## RNOH 三方库总览 | 序号 | 原库名 | 原库基线版本 | 原库是否支持新架构 | 鸿蒙化进度 | 已发布的最新版本 | 文档链接 | :----------: | :----------: | :----------: | :----------: | :----------: | :----------: | :----------: | -| 1 | @react-native-community/slider | 4.4.3 | 是 | 90% | [@react-native-oh-library/slider@4.4.3-0.1.1](https://github.com/react-native-oh-library/react-native-slider/releases/tag/4.4.3-0.1.1) | [链接](zh-cn/react-native-slider.md) | -| 3 | @react-native-picker/picker | 2.5.1 | 是 | 90% | [@react-native-oh-library/picker@2.5.1-0.0.1](https://github.com/react-native-oh-library/picker/releases/tag/2.5.1-0.0.1) | [链接](zh-cn/picker.md) | +| 1 | @react-native-async-storage/async-storage | 1.19.5 | 是 | 100% | [@react-native-oh-library/async-storage@1.19.5-0.0.3](https://github.com/react-native-oh-library/async-storage/releases/tag/1.19.5-0.0.3) | [链接](zh-cn/async-storage.md) | +| 2 | @react-native-picker/picker | 2.5.1 | 否 | 90% | [@react-native-oh-library/picker@2.5.1-0.0.1](https://github.com/react-native-oh-library/picker/releases/tag/2.5.1-0.0.1) | [链接](zh-cn/picker.md) | +| 3 | @react-native-community/checkbox | 0.5.16 | 否 | 100% | [@react-native-oh-library/checkbox@0.5.16-0.0.1](https://github.com/react-native-oh-library/react-native-checkbox/releases/tag/0.5.16-0.0.1) | [链接](zh-cn/react-native-checkbox.md) | +| 4 | @react-native-community/slider | 4.4.3 | 是 | 90% | [@react-native-oh-library/slider@4.4.3-0.1.1](https://github.com/react-native-oh-library/react-native-slider/releases/tag/4.4.3-0.1.1) | [链接](zh-cn/react-native-slider.md) | ## 社区 + +[react-native-oh-library](https://github.com/react-native-oh-library) \ No newline at end of file diff --git a/_sidebar.md b/_sidebar.md index 220d75e1..c0190f8a 100644 --- a/_sidebar.md +++ b/_sidebar.md @@ -3,6 +3,7 @@ - 三方库说明文档合集 + - [@react-native-async-storage/async-storage](zh-cn/async-storage.md) - [@react-native-community/slider](zh-cn/react-native-slider.md) - [@react-native-community/checkbox](zh-cn/react-native-checkbox.md) - [@react-native-picker/picker](zh-cn/picker.md) diff --git a/index.html b/index.html index 0877b41d..12591fc6 100644 --- a/index.html +++ b/index.html @@ -78,6 +78,26 @@ scroll: false, // 启用滚动 height: 300 // 折叠高度 }, + plugins: [ + function (hook, vm) { + // load livere + hook.beforeEach(function(content) { + var comment = "
\n\n----\n" + return content + comment; + }); + + hook.doneEach(function() { + (function(d, s) { + var j, e = d.getElementsByTagName(s)[0]; + if (typeof LivereTower === 'function') { return; } + j = d.createElement(s); + j.src = 'https://cdn-city.livere.com/js/embed.dist.js'; + j.async = true; + e.parentNode.insertBefore(j, e); + })(document, 'script'); + }); + }, + ], } diff --git a/zh-cn/README.md b/zh-cn/README.md index 47f8f8d9..3384dea4 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -4,13 +4,17 @@ ## 概述 -该文档旨在帮助开发者在OpenHarmony平台使用React Native OpenHarmony的第三方库,并呈现每个三方库的信息。 +该文档旨在帮助开发者在 OpenHarmony 平台使用 React Native OpenHarmony 的第三方库,并呈现每个三方库的信息。 ## RNOH 三方库总览 | 序号 | 原库名 | 原库基线版本 | 原库是否支持新架构 | 鸿蒙化进度 | 已发布的最新版本 | 文档链接 | :----------: | :----------: | :----------: | :----------: | :----------: | :----------: | :----------: | -| 1 | @react-native-community/slider | 4.4.3 | 是 | 90% | [@react-native-oh-library/slider@4.4.3-0.1.1](https://github.com/react-native-oh-library/react-native-slider/releases/tag/4.4.3-0.1.1) | [链接](zh-cn/react-native-slider.md) | -| 3 | @react-native-picker/picker | 2.5.1 | 是 | 90% | [@react-native-oh-library/picker@2.5.1-0.0.1](https://github.com/react-native-oh-library/picker/releases/tag/2.5.1-0.0.1) | [链接](zh-cn/picker.md) | +| 1 | @react-native-async-storage/async-storage | 1.19.5 | 是 | 100% | [@react-native-oh-library/async-storage@1.19.5-0.0.3](https://github.com/react-native-oh-library/async-storage/releases/tag/1.19.5-0.0.3) | [链接](zh-cn/async-storage.md) | +| 2 | @react-native-picker/picker | 2.5.1 | 否 | 90% | [@react-native-oh-library/picker@2.5.1-0.0.1](https://github.com/react-native-oh-library/picker/releases/tag/2.5.1-0.0.1) | [链接](zh-cn/picker.md) | +| 3 | @react-native-community/checkbox | 0.5.16 | 否 | 100% | [@react-native-oh-library/checkbox@0.5.16-0.0.1](https://github.com/react-native-oh-library/react-native-checkbox/releases/tag/0.5.16-0.0.1) | [链接](zh-cn/react-native-checkbox.md) | +| 4 | @react-native-community/slider | 4.4.3 | 是 | 90% | [@react-native-oh-library/slider@4.4.3-0.1.1](https://github.com/react-native-oh-library/react-native-slider/releases/tag/4.4.3-0.1.1) | [链接](zh-cn/react-native-slider.md) | ## 社区 + +[react-native-oh-library](https://github.com/react-native-oh-library) \ No newline at end of file diff --git a/zh-cn/async-storage.md b/zh-cn/async-storage.md new file mode 100644 index 00000000..e3d29c23 --- /dev/null +++ b/zh-cn/async-storage.md @@ -0,0 +1,224 @@ +

+

@react-native-async-storage/async-storage

+

+

+ + Supported platforms + + + License + +

+ +## 安装与使用 + +> [!tip] 目前 React-Native-OpenHarmony(RNOH) 三方库的 npm 包部署在私仓,需要通过 github token 来获取访问权限。 + +在与 `package.json` 文件相同的目录中,创建或编辑 `.npmrc` 文件以包含指定 GitHub Packages URL 和托管包的命名空间的行。 将 TOKEN 替换为 RNOH 三方库指定的 token。 + +```bash +@react-native-oh-library:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=TOKEN +``` + +进入到工程目录并输入以下命令: + +```bash +yarn add @react-native-async-storage/async-storage@npm:@react-native-oh-library/async-storage +``` + +或者 + +```bash +npm install @react-native-async-storage/async-storage@npm:@react-native-oh-library/async-storage +``` + +下面的代码展示了这个库的基本使用场景: + +```js +import AsyncStorage from "@react-native-async-storage/async-storage"; + +// Storing data +const storeData = async (value) => { + try { + await AsyncStorage.setItem("my-key", value); + } catch (e) { + // saving error + } +}; + +// Reading data +const getData = async () => { + try { + const value = await AsyncStorage.getItem("my-key"); + if (value !== null) { + // value previously stored + } + } catch (e) { + // error reading value + } +}; +``` + +## Link + +目前鸿蒙暂不支持 AutoLink,所以 Link 步骤需要手动配置。 + +首先需要使用 DevEco Studio 打开项目里的鸿蒙工程 `harmony` + +### 引入原生端代码 + +目前有两种方法: + +1. 通过 har 包引入(在 IDE 完善相关功能后该方法会被遗弃,目前首选此方法); +2. 直接链接源码。 + +方法一:通过 har 包引入 +打开 `entry/oh-package.json5`,添加以下依赖 + +```json +"dependencies": { + "rnoh": "file:../rnoh", + "rnoh-slider": "file:../../node_modules/@react-native-async-storage/async-storage/harmony/async_storage.har" + } +``` + +点击右上角的 `sync` 按钮 + +或者在终端执行: + +```bash +cd entry +ohpm install +``` + +方法二:直接链接源码 +打开 `entry/oh-package.json5`,添加以下依赖 + +```json +"dependencies": { + "rnoh": "file:../rnoh", + "rnoh-slider": "file:../../node_modules/@react-native-async-storage/async-storage/harmony/async-storage" + } +``` + +打开终端,执行: + +```bash +cd entry +ohpm install --no-link +``` + +### 配置 CMakeLists 和引入 SliderPackge + +打开 `entry/src/main/cpp/CMakeLists.txt`,添加: + +```diff +project(rnapp) +cmake_minimum_required(VERSION 3.4.1) +set(RNOH_APP_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +set(OH_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules") +set(RNOH_CPP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../react-native-harmony/harmony/cpp") + +add_subdirectory("${RNOH_CPP_DIR}" ./rn) + +# RNOH_BEGIN: add_package_subdirectories +add_subdirectory("../../../../sample_package/src/main/cpp" ./sample-package) ++ add_subdirectory("${OH_MODULE_DIR}/rnoh-async-storage/src/main/cpp" ./async-storage) +# RNOH_END: add_package_subdirectories + +add_library(rnoh_app SHARED + "./PackageProvider.cpp" + "${RNOH_CPP_DIR}/RNOHAppNapiBridge.cpp" +) + +target_link_libraries(rnoh_app PUBLIC rnoh) + +# RNOH_BEGIN: link_packages +target_link_libraries(rnoh_app PUBLIC rnoh_sample_package) ++ target_link_libraries(rnoh_app PUBLIC rnoh_async_storage) +# RNOH_END: link_packages +``` + +打开 `entry/src/main/cpp/PackageProvider.cpp`,添加: + +```diff +#include "RNOH/PackageProvider.h" +#include "SamplePackage.h" ++ #include "AsyncStoragePackage.h" + +using namespace rnoh; + +std::vector> PackageProvider::getPackages(Package::Context ctx) { + return { + std::make_shared(ctx), ++ std::make_shared(ctx) + }; +} +``` + +### 在 ArkTs 侧引入 slider 组件 + +打开 `entry/src/main/ets/RNPackagesFactory.ts`,添加: + +```diff +import type {RNPackageContext, RNPackage} from 'rnoh/ts'; +import {SamplePackage} from 'rnoh-sample-package/ts'; ++ import {AsyncStoragePackage} from 'rnoh-async-storage/ts'; + +export function createRNPackages(ctx: RNPackageContext): RNPackage[] { + return [ + new SamplePackage(ctx), ++ new AsyncStoragePackage(ctx) + ]; +} + +``` + +### 运行 + +点击右上角的 `sync` 按钮 + +或者在终端执行: + +```bash +cd entry +ohpm install +``` + +然后编译、运行即可。 + +## 兼容性 + +要使用此库,需要使用正确的 React-Native 和 RNOH 版本。另外,还需要使用配套的 DevEco Studio 和 手机 ROM。 + +| `@react-native-oh-library/async-storage` Version | Required React Native Version | Required RNOH Version | Required DevEco Studio Version | Required ROM Version | +| ------------------------------------------------ | ----------------------------- | --------------------- | ------------------------------ | --------------------- | +| `1.19.5-0.0.3` | `0.72.5` | `0.72.10` | `4.0.3.601` | `OpenHarmony 4.10.10` | + +## API + +| 名称 | 说明 | 类型 | 是否必填 | 平台 | 鸿蒙支持 | +| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------- | ---- | -------- | +| `getItem` | Gets a string value for given key. This function can either return a string value for existing key or return null otherwise. | function | No | All | yes | +| `setItem` | Sets a string value for given key. This operation can either modify an existing entry, if it did exist for given key, or add new one otherwise. | function | No | All | yes | +| `mergeItem` | Merges an existing value stored under key, with new value, assuming both values are stringified JSON. | function | No | All | yes | +| `removeItem` | Removes item for a key, invokes (optional) callback once completed. | function | No | All | yes | +| `getAllKeys` | Returns all keys known to your App, for all callers, libraries, etc. Once completed, invokes callback with errors (if any) and array of keys. | function | No | All | yes | +| `multiGet` | Fetches multiple key-value pairs for given array of keys in a batch. Once completed, invokes callback with errors (if any) and results. | function | No | All | yes | +| `multiSet` | Stores multiple key-value pairs in a batch. Once completed, callback with any errors will be called. | function | No | All | yes | +| `multiMerge` | Multiple merging of existing and new values in a batch. Assumes that values are stringified JSON. Once completed, invokes callback with errors (if any). | function | No | All | yes | +| `multiRemove` | Clears multiple key-value entries for given array of keys in a batch. Once completed, invokes a callback with errors (if any). | function | No | All | yes | +| `clear` | Removes whole AsyncStorage data, for all clients, libraries, etc. You probably want to use removeItem or multiRemove to clear only your App's keys. | function | No | All | yes | +| `useAsyncStorage` | The useAsyncStorage returns an object that exposes all methods that allow you to interact with the stored value. | hook | No | All | yes | + +## 遗留问题 + +- [ ] Harmony 的 taskpool 支持类型有限,无法用 taskpool 实现,仅用简单的线程锁替代 +- [ ] Harmony 无法设置指定的存储大小 + +## 其他 + +## 开源协议 + +本项目基于 [The MIT License (MIT)](https://github.com/callstack/react-native-slider/blob/main/LICENSE.md) ,请自由地享受和参与开源。 -- Gitee