From b52cf77ef271f89a7b1a53cbc10471e2ce59f46d Mon Sep 17 00:00:00 2001 From: dkd <1585765832@qq.com> Date: Fri, 7 Jun 2024 09:59:58 +0800 Subject: [PATCH 001/966] =?UTF-8?q?docs:=20[Issues:=20#I9VQPS]=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9Ereacr-native-modalbox=E6=8C=87=E5=AF=BC=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh-cn/react-native-modalbox.md | 360 +++++++++++++++++++++++++++++++++ 1 file changed, 360 insertions(+) create mode 100644 zh-cn/react-native-modalbox.md diff --git a/zh-cn/react-native-modalbox.md b/zh-cn/react-native-modalbox.md new file mode 100644 index 00000000..a8f3834d --- /dev/null +++ b/zh-cn/react-native-modalbox.md @@ -0,0 +1,360 @@ +> 模板版本:v0.2.1 + +

+

react-native-modalbox

+

+

+ + Supported platforms + + + License + +

+ +> [!tip] [Github 地址](https://github.com/maxs15/react-native-modalbox) + +## 安装与使用 + +请到三方库的 Releases 发布地址查看配套的版本信息:[@react-native-oh-tpl/react-native-modalbox Releases](https://github.com/react-native-oh-library/react-native-modalbox/releases),并下载适用版本的 tgz 包。 + +进入到工程目录并输入以下命令: + +> [!TIP] # 处替换为 tgz 包的路径 + + + +#### **npm** + +```bash +npm install @react-native-oh-tpl/react-native-modalbox@file:# +``` + +#### **yarn** + +```bash +yarn add @react-native-oh-tpl/react-native-modalbox@file:# +``` + + + +下面的代码展示了这个库的基本使用场景: + +> [!WARNING] 使用时 import 的库名不变。 + +```js + +import React from 'react'; +import Modal from 'react-native-modalbox'; + +import { TestSuite, Tester, TestCase } from '@rnoh/testerino'; +import { + Text, + Button, + StyleSheet, + ScrollView, + View, + Dimensions, + Easing, + TextInput +} from 'react-native'; + +var screen = Dimensions.get('window'); + +export default class ModalBoxExample extends React.Component { + + constructor(props:any) { + super(props); + this.state = { + isOpen: false, + isDisabled: false, + swipeToClose: true, + sliderValue: 0.3 + }; + } + + + onClose() { + console.log('Modal just closed'); + } + animalEase(){ + Easing.elastic(8) + } + + onOpen() { + console.log('Modal just opened'); + } + + onClosingState(state:any) { + console.log('the open/close of the swipeToClose just changed'); + } + + renderList() { + var list = []; + + for (var i=0;i<50;i++) { + list.push(Elem {i}); + } + + return list; + } + + render() { + var BContent = ( + + - @@ -82,7 +78,9 @@ const App = () => { export default App; ``` +## 使用 Codegen +本库已经适配了 `Codegen` ,在使用前需要主动执行生成三方库桥接代码,详细请参考[ Codegen 使用文档](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/codegen.md)。 ## Link 目前鸿蒙暂不支持 AutoLink,所以 Link 步骤需要手动配置。 @@ -131,37 +129,21 @@ ohpm install 方法二:直接链接源码 -> [!TIP] 源码位于三方库安装路径的 `harmony` 文件夹下。 - -打开 `entry/oh-package.json5`,添加以下依赖 - -```json -"dependencies": { - "@rnoh/react-native-openharmony": "file:../react_native_openharmony", - "@react-native-oh-tpl/react-native-touch-id": "file:../../node_modules/@react-native-oh-tpl/react-native-touch-id/harmony/touch_id" - } -``` - -打开终端,执行: - -```bash -cd entry -ohpm install --no-link -``` +> [!TIP] 如需使用直接链接源码,请参考[直接链接源码说明](/zh-cn/link-source-code.md) -### 在 ArkTs 侧引入 CalculatorPackage +### 在 ArkTs 侧引入 TouchIdPackage 打开 `entry/src/main/ets/RNPackagesFactory.ts`,添加: ```diff ... -+ import { CalculatorPackage } from "@react-native-oh-tpl/react-native-touch-id/ts"; ++ import { TouchIdPackage } from "@react-native-oh-tpl/react-native-touch-id/ts"; export function createRNPackages(ctx: RNPackageContext): RNPackage[] { return [ new SamplePackage(ctx), -+ new CalculatorPackage(ctx) ++ new TouchIdPackage(ctx) ]; } ``` @@ -189,10 +171,6 @@ ohpm install 请到三方库相应的 Releases 发布地址查看 Release 配套的版本信息:[@react-native-oh-tpl/react-native-touch-id Releases](https://github.com/react-native-oh-library/react-native-touch-id/releases) -本文档内容基于以下版本验证通过: - -1. RNOH:0.72.20; SDK:HarmonyOS NEXT Developer Beta1; IDE:DevEco Studio 5.0.3.200; ROM:3.0.0.18 - ### 权限要求 (填入相关权限配置) @@ -217,9 +195,32 @@ In your `module.json5` | Name | Description | Type | Required | Platform | HarmonyOS Support | | ---- | ----------- | ---- | -------- | -------- | ------------------ | -| isSupported | 是否支持指纹 | function | yes | ios/andriod | yes | -| authenticate | 验证指纹 | function | yes | ios/andriod | yes | +| isSupported | Whether touchid is supported | function | yes | ios/andriod | yes | +| authenticate | Verify touchid | function | yes | ios/andriod | yes | +## 属性 + +> [!tip] "Platform"列表示该属性在原三方库上支持的平台。 + +> [!tip] "HarmonyOS Support"列为 yes 表示 HarmonyOS 平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。 +### Errors + +| Name | Description | Type | Required | Platform | HarmonyOS Support | +| ---- | ----------- | ---- | -------- | -------- | ------------------ | +| Touch ID Error | Permission verification failed | string | no | harmonry | yes | +| Touch ID Error | Incorrect parameters | string | no | harmonry | yes | +| Touch ID Error | Authentication failed | string | no | harmonry | yes | +| Touch ID Error | The operation is canceled | string | no | harmonry | yes | +| Touch ID Error | The operation is time-out | string | no | harmonry | yes | +| Touch ID Error | The authentication type is not supported | string | no | harmonry | yes | +| Touch ID Error | The authentication trust level is not supported | string | no | harmonry | yes | +| Touch ID Error | The authentication task is busy | string | no | harmonry | yes | +| Touch ID Error | The authenticator is locked | string | no | harmonry | yes | +| Touch ID Error | General operation error | string | no | harmonry | no | +| Touch ID Error | The authentication type is not supported | string | no | harmonry | yes | +| Touch ID Error | The type of credential has not been enrolled | string | no | harmonry | yes | +| Touch ID Error | The authentication is canceled from widget's navigation button | string | no | harmonry | yes | +| Touch ID Error | Indicates that current authentication failed because of PIN expired | string | no | harmonry | yes | ## 遗留问题 ## 其他 From 5cbbf0aa084133d1be02536779a24a9a77cfb3d1 Mon Sep 17 00:00:00 2001 From: qianyu Date: Tue, 18 Jun 2024 19:48:01 +0800 Subject: [PATCH 010/966] =?UTF-8?q?docs:=20=20[Issues:=20#IA4XW6]=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9react-native-ble-manager=E6=8C=87=E5=AF=BC?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh-cn/react-native-ble-manager.md | 592 ++++++++++++++++++++++++++++++ 1 file changed, 592 insertions(+) create mode 100644 zh-cn/react-native-ble-manager.md diff --git a/zh-cn/react-native-ble-manager.md b/zh-cn/react-native-ble-manager.md new file mode 100644 index 00000000..db889662 --- /dev/null +++ b/zh-cn/react-native-ble-manager.md @@ -0,0 +1,592 @@ +> 模板版本:v0.2.2 + +

+

react-native-ble-manager

+

+

+ + Supported platforms + + + License + + +

+ + +> [!TIP] [Github 地址](https://github.com/react-native-oh-library/react-native-ble-manager) + +## 安装与使用 + +请到三方库的 Releases 发布地址查看配套的版本信息:[@react-native-oh-tpl/react-native-ble-manager Releases](https://github.com/react-native-oh-library/react-native-ble-manager/releases),并下载适用版本的 tgz 包。 + +进入到工程目录并输入以下命令: + +> [!TIP] # 处替换为 tgz 包的路径 + + + +#### **npm** + +```bash +npm install @react-native-oh-tpl/react-native-ble-manager@file:# +``` + +#### **yarn** + +```bash +yarn add @react-native-oh-tpl/react-native-ble-manager@file:# +``` + + + +下面的代码展示了这个库的基本使用场景: + +> [!WARNING] 使用时 import 的库名不变。 + +```js +import React, { useState, useEffect } from 'react'; +import { ScrollView, StyleSheet, Button, View, Text, NativeEventEmitter, NativeModules, TouchableHighlight, FlatList, Alert } from 'react-native'; +import ReactNativeBleManager from 'react-native-ble-manager'; +import { Peripheral } from 'react-native-ble-manager'; +import { Colors } from 'react-native/Libraries/NewAppScreen'; + + +declare module '@react-native-oh-tpl/react-native-ble-manager' { + interface Peripheral { + connected?: boolean; + connecting?: boolean; + } +} + +export enum BleState { + Unknown = "unknown", + Resetting = "resetting", + Unsupported = "unsupported", + Unauthorized = "unauthorized", + On = "on", + Off = "off", + TurningOn = "turning_on", + TurningOff = "turning_off", +} + +export enum BleScanMatchMode { + Aggressive = 1, + Sticky = 2, +} + +export enum BleScanMode { + Opportunistic = -1, + LowPower = 0, + Balanced = 1, + LowLatency = 2, +} + +const BleManagerModule = NativeModules.BleManager; +const bleManagerEmitter = new NativeEventEmitter(BleManagerModule); + +export default function BleManagerDemo() { + useEffect(() => { + listeners + }) + + const [result, setResult] = useState(''); + const [deviceId, setDeviceId] = useState('') + + + const [peripherals, setPeripherals] = useState( + new Map(), + ); + + + const handleDiscoverPeripheral = (peripheral: Peripheral) => { + setResult(JSON.stringify(peripheral)) + setDeviceId(peripheral.id); + if (!peripheral.name) { + peripheral.name = 'NO NAME'; + } + setPeripherals(map => { + return new Map(map.set(peripheral.id, peripheral)); + }); + }; + + const listeners = [ + bleManagerEmitter.addListener('BleManagerDiscoverPeripheral', handleDiscoverPeripheral), + ]; + + const renderItem = ({ item }: { item: Peripheral }) => { + return ( + + + + {item.name} - {item?.advertising?.localName} + {item.connecting && ' - Connecting...'} + + RSSI: {item.rssi} + {item.id} + {`${item.advertising.isConnectable}`} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); + }; + + return ( + + + BleManager + + + + + + + + + + + + + + item.id} + style={{ width: '100%' }} + /> + + ) +} + +const boxShadow = { + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.25, + shadowRadius: 3.84, + elevation: 5, +}; + +const styles = StyleSheet.create({ + container: { + width: '100%', + height: '100%', + flexDirection: 'column', + alignItems: 'center', + backgroundColor: '#F1F3F5', + }, + baseText: { + width: '100%', + height: '100%', + fontWeight: 'bold', + textAlign: 'center', + fontSize: 16, + ellipsizeMode: 'tail', + numberOfLines: 2 + }, + titleArea: { + width: '90%', + height: '8%', + alignItems: 'center', + flexDirection: 'row', + }, + title: { + width: '90%', + color: '#000000', + textAlign: "center", + fontSize: 30, + border:5, + }, + scrollView: { + width: '90%', + marginHorizontal: 10, + }, + + inputArea: { + width: '90%', + height: '10%', + borderWidth: 2, + borderColor: '#000000', + marginTop: 8, + justifyContent: 'center', + alignItems: 'center', + }, + baseArea: { + width: '100%', + height: 60, + borderRadius: 4, + borderColor: '#000000', + marginTop: 6, + backgroundColor: '#FFFFFF', + flexDirection: 'row', + alignItems: 'center', + paddingLeft: 8, + paddingRight: 8 + }, + engine: { + position: 'absolute', + right: 10, + bottom: 0, + color: Colors.black, + }, + buttonGroup: { + flexDirection: 'row', + width: '100%' + }, + scanButton: { + alignItems: 'center', + justifyContent: 'center', + paddingVertical: 16, + paddingHorizontal: 16, + backgroundColor: '#0a398a', + margin: 10, + borderRadius: 12, + flex: 1, + ...boxShadow, + }, + scanButtonText: { + fontSize: 16, + letterSpacing: 0.25, + color: Colors.white, + }, + body: { + backgroundColor: '#0082FC', + flex: 1, + }, + sectionContainer: { + marginTop: 32, + paddingHorizontal: 24, + }, + sectionTitle: { + fontSize: 24, + fontWeight: '600', + color: Colors.black, + }, + sectionDescription: { + marginTop: 8, + fontSize: 18, + fontWeight: '400', + color: Colors.dark, + }, + highlight: { + fontWeight: '700', + }, + footer: { + color: Colors.dark, + fontSize: 12, + fontWeight: '600', + padding: 4, + paddingRight: 12, + textAlign: 'right', + }, + peripheralName: { + fontSize: 16, + textAlign: 'center', + padding: 10, + }, + rssi: { + fontSize: 12, + textAlign: 'center', + padding: 2, + }, + peripheralId: { + fontSize: 12, + textAlign: 'center', + padding: 2, + paddingBottom: 20, + }, + row: { + marginLeft: 10, + marginRight: 10, + borderRadius: 20, + ...boxShadow, + alignItems: 'center' + }, + noPeripherals: { + margin: 10, + textAlign: 'center', + color: Colors.white, + }, +}); +``` + +## 使用 Codegen + +本库已经适配了 `Codegen` ,在使用前需要主动执行生成三方库桥接代码,详细请参考[ Codegen 使用文档](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/codegen.md)。 + +## Link + +目前鸿蒙暂不支持 AutoLink,所以 Link 步骤需要手动配置。 + +首先需要使用 DevEco Studio 打开项目里的鸿蒙工程 `harmony` + +### 在工程根目录的 `oh-package.json` 添加 overrides 字段 + +```json +{ + ... + "overrides": { + "@rnoh/react-native-openharmony" : "./react_native_openharmony" + } +} +``` + +### 引入原生端代码 + +目前有两种方法: + +1. 通过 har 包引入(在 IDE 完善相关功能后该方法会被遗弃,目前首选此方法); +2. 直接链接源码。 + +方法一:通过 har 包引入(推荐) + +> [!TIP] har 包位于三方库安装路径的 `harmony` 文件夹下。 + +打开 `entry/oh-package.json5`,添加以下依赖 + +```json +"dependencies": { + "@rnoh/react-native-openharmony": "file:../react_native_openharmony", + "@react-native-oh-tpl/react-native-ble-manager": "file:../../node_modules/@react-native-oh-tpl/react-native-ble-manager/harmony/ble_manager.har" + } +``` + +点击右上角的 `sync` 按钮 + +或者在终端执行: + +```bash +cd entry +ohpm install +``` + +方法二:直接链接源码 + +> [!TIP] 如需使用直接链接源码,请参考[直接链接源码说明](/zh-cn/link-source-code.md) + +### 在 ArkTs 侧引入 BlePackage + +打开 `entry/src/main/ets/RNPackagesFactory.ts`,添加: + +```diff +... ++ import { BlePackage } from '@react-native-oh-tpl/react-native-ble-manager/ts'; + + +export function createRNPackages(ctx: RNPackageContext): RNPackage[] { + return [ + new SamplePackage(ctx), ++ new BlePackage(ctx) + ]; +} +``` + +### 运行 + +点击右上角的 `sync` 按钮 + +或者在终端执行: + +```bash +cd entry +ohpm install +``` + +然后编译、运行即可。 + +## 约束与限制 + +### 兼容性 + +要使用此库,需要使用正确的 React-Native 和 RNOH 版本。另外,还需要使用配套的 DevEco Studio 和 手机 ROM。 + +请到三方库相应的 Releases 发布地址查看 Release 配套的版本信息:[@react-native-oh-tpl/react-native-ble-manager Releases](https://github.com/react-native-oh-library/react-native-ble-manager/releases) + +### 权限要求 + +- 由于此库涉及蓝牙系统控制功能,使用对应接口时则需要配置对应的权限,权限需配置在entry/src/main目录下module.json5文件中。其中部分权限需弹窗向用户申请授权。具体权限配置见文档:[程序访问控制](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/Readme-CN.md#/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/app-permission-mgmt-overview.md)。 + +- 此库部分功能与接口需要normal权限:ohos.permission.ACCESS_BLUETOOTH。 + +## API + +> [!tip] "Platform"列表示该属性在原三方库上支持的平台。 + +> [!tip] "HarmonyOS Support"列为 yes 表示 HarmonyOS 平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。 + +| Name | Description | Required | Platform | HarmonyOS Support | +| -------------------------------------------- | ------------------------------------------------------------ | -------- | ----------- | ----------------- | +| start | Init the module. Returns a `Promise` object. Don’t call this multiple times. | No | IOS/Android | Yes | +| scan | Scan for available peripherals | No | IOS/Android | Yes | +| stopScan | Stop the scanning | No | IOS/Android | yes | +| connect | Attempts to connect to a peripheral. In many case if you can’t connect you have to scan for the peripheral before | No | IOS/Android | Yes | +| disconnect | Disconnect from a peripheral | No | IOS/Android | Yes | +| enableBluetooth | Create the ACTION_REQUEST_ENABLE to ask the user to activate the bluetooth | No | Android | Yes | +| checkState | Force the module to check the state of the native BLE manager and trigger a BleManagerDidUpdateState event | No | IOS/Android | Yes | +| readRSSI | Read the current value of the RSSI | No | IOS/Android | Yes | +| createBond | Start the bonding (pairing) process with the remote device | No | Android | Yes | +| retrieveServices | Retrieve the peripheral’s services and characteristics | No | IOS/Android | Yes | +| startNotification | Start the notification on the specified characteristic, you need to call `retrieveServices` method before | No | IOS/Android | Yes | +| read | Read the current value of the specified characteristic, you need to call `retrieveServices` method before | No | IOS/Android | Yes | +| write | Write with response to the specified characteristic, you need to call `retrieveServices` method before | No | IOS/Android | Yes | +| readDescriptor | Read the current value of the specified descriptor, you need to call `retrieveServices` method before | No | IOS/Android | Yes | +| writeDescriptor | Write a value to the specified descriptor, you need to call `retrieveServices` method before | No | IOS/Android | Yes | +| requestMTU | Request an MTU size used for a given connection | No | Android | Yes | +| getConnectedPeripherals | Return the connected peripherals | No | IOS/Android | Yes | +| getBondedPeripherals | Return the bonded peripherals | No | IOS/Android | Yes | +| getDiscoveredPeripherals | Return the discovered peripherals after a scan | No | IOS/Android | Yes | +| removeBond | Remove a paired device | No | Android | No | +| refreshCache | refreshes the peripheral’s services and characteristics cache Returns a `Promise` object. | No | Android | No | +| requestConnectionPriority | Request a connection parameter update | No | Android | No | +| startNotificationUseBuffer | Start the notification on the specified characteristic, you need to call `retrieveServices` method before | No | Android | No | +| removePeripheral | Removes a disconnected peripheral from the cached list | No | Android | Yes | +| CompanionScan | Scan for companion devices | No | Android | No | +| getAssociatedPeripherals | Retrive associated peripherals (from companion manager) | No | Android | No | +| removeAssociatedPeripheral | Remove a associated peripheral | No | Android | No | +| setName | Create the request to set the name of the bluetooth adapter | No | Android | No | +| isScanning | Checks whether the scan is in progress and return `true` or `false` | No | IOS/Android | Yes | +| writeWithoutResponse | Write without response to the specified characteristic, you need to call `retrieveServices` method before | No | IOS/Android | No | +| getMaximumWriteValueLengthForWithoutResponse | Return the maximum value length for WriteWithoutResponse | No | IOS | No | +| getMaximumWriteValueLengthForWithResponse | Return the maximum value length for WriteWithResponse | No | IOS | No | +| isPeripheralConnected | Check whether a specific peripheral is connected and return `true` or `false` | No | IOS | Yes | +| supportsCompanion | Check if current device supports companion device manager | No | Android | No | +| stopNotification | Stop the notification on the specified characteristic | No | IOS/Android | No | + +## 遗留问题 + +- [ ] refreshCache 用于清理和刷新蓝牙设备缓存的一部分 [issue#3](https://github.com/react-native-oh-library/react-native-ble-manager/issues/3) +- [ ] requestConnectionPriority 用于请求蓝牙连接优先级 [issue#4](https://github.com/react-native-oh-library/react-native-ble-manager/issues/4) +- [ ] startNotificationUseBuffer 用来启动一个带缓冲区的通知服务 [issue#6](https://github.com/react-native-oh-library/react-native-ble-manager/issues/6) +- [ ] CompanionScan 扫描配套设备[issue#5](https://github.com/react-native-oh-library/react-native-ble-manager/issues/5) +- [ ] getAssociatedPeripherals 检索相关外围设备(从配套管理器) [issue#7](https://github.com/react-native-oh-library/react-native-ble-manager/issues/7) +- [ ] removeAssociatedPeripheral 移除相关外围设备 [issue#8](https://github.com/react-native-oh-library/react-native-ble-manager/issues/8) +- [ ] setName 创建设置蓝牙适配器名称 [issue#9](https://github.com/react-native-oh-library/react-native-ble-manager/issues/9) +- [ ] supportsCompanion 检查当前设备是否支持配套设备管理器 [issue#10](https://github.com/react-native-oh-library/react-native-ble-manager/issues/10) +- [ ] stopNotification 停止指定特征的通知 [issue#11](https://github.com/react-native-oh-library/react-native-ble-manager/issues/11) +- [ ] writeWithoutResponse 写入不响应指定特性 [issue#12](https://github.com/react-native-oh-library/react-native-ble-manager/issues/12) +- [ ] removeBond 删除已配对的设备 [issue#13](https://github.com/react-native-oh-library/react-native-ble-manager/issues/13) +- [ ] getMaximumWriteValueLengthForWithoutResponse 用于获取在不带响应的情况下可以写入的最大数据长度 [issue#14](https://github.com/react-native-oh-library/react-native-ble-manager/issues/14) +- [ ] getMaximumWriteValueLengthForWithResponse 它用于获取在带有响应的情况下可以写入的最大数据长度 [issue#15](https://github.com/react-native-oh-library/react-native-ble-manager/issues/15) + +## 其他 + +## 开源协议 + +本项目基于[The MIT License (MIT)](https://github.com/innoveit/react-native-ble-manager/blob/master/LICENSE) ,请自由地享受和参与开源。 + From c22e69004e1186eff29b93abc25d5ed52e1febc5 Mon Sep 17 00:00:00 2001 From: wjy <18071094885@163.com> Date: Wed, 19 Jun 2024 09:47:39 +0800 Subject: [PATCH 011/966] =?UTF-8?q?fix:=20[Issues:=20#I9VQPS]=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9react-native-modalbox=E6=8C=87=E5=AF=BC=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh-cn/react-native-modalbox.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zh-cn/react-native-modalbox.md b/zh-cn/react-native-modalbox.md index 299d6276..ad0def3f 100644 --- a/zh-cn/react-native-modalbox.md +++ b/zh-cn/react-native-modalbox.md @@ -1,4 +1,4 @@ -> 模板版本:v0.2.1 +> 模板版本:v0.2.2

react-native-modalbox

@@ -278,7 +278,7 @@ hese methods are optional, you can use the isOpen property instead | Name | Description | Type | Required |Platform|HarmonyOS Support | | :------------ |:---------------:| :---------------:|:---------------:|:---------------:|:---------------:| -| open | Open the modal | `function` | no | IOS/Android | yes | +| open | Open the modal | `function` | no | IOS/Android | yes | | close | Close the modal | `function` | no | IOS/Android | yes | From 3f6ce9f0a4423b33f9475576d96b899e89ede463 Mon Sep 17 00:00:00 2001 From: "amiz21@qq.com" Date: Wed, 19 Jun 2024 11:10:42 +0800 Subject: [PATCH 012/966] =?UTF-8?q?docs:=20[Issues:=20#IA6F3D]=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9Ereact-native-image-base64=E6=8C=87=E5=AF=BC=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Menu.xlsx | Bin 29570 -> 29880 bytes README.md | 1 + _sidebar.md | 1 + zh-cn/README.md | 2 +- zh-cn/react-native-image-base64.md | 221 +++++++++++++++++++++++++++++ 5 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 zh-cn/react-native-image-base64.md diff --git a/Menu.xlsx b/Menu.xlsx index 9b2dfcc974d085ba7415483a131cc218da325f77..2699e6d4967bb39b3e3bd9019067003428d39373 100644 GIT binary patch delta 24305 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 MJ{*`cZvWZ*KdvtAi~s-t diff --git a/README.md b/README.md index 8c5e38a2..c66af518 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,7 @@ | 136 | [react-native-reconnecting-websocket](https://github.com/React-Sextant/react-native-reconnecting-websocket) | 1.0.3 | − | − | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-reconnecting-websocket.md) | | 137 | [react-native-json-tree](https://github.com/Dean177/react-native-json-tree) | 1.3.0 | − | − | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-json-tree.md) | | 138 | [react-native-image-gallery](https://github.com/meliorence/react-native-image-gallery) | 2.1.5 | − | [@react-native-oh-tpl/react-native-image-gallery](https://github.com/react-native-oh-library/react-native-image-gallery/releases) | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-image-gallery.md) | +| 139 | [react-native-image-image-base64](https://github.com/SnappFr/react-native-image-base64) | 0.1.3 | − | − | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-image-base64.md) | ## 社区 diff --git a/_sidebar.md b/_sidebar.md index 9abe6ea5..dc67a6a5 100644 --- a/_sidebar.md +++ b/_sidebar.md @@ -51,6 +51,7 @@ - [lottie-react-native](/zh-cn/lottie-react-native.md) - [react-native-image-sequence-2](/zh-cn/react-native-image-sequence-2.md) - [react-native-clippath](/zh-cn/react-native-clippath.md) + - [react-native-image-base64](/zh-cn/react-native-image-base64.md) - RN JS 库 - [react-i18next](/zh-cn/react-i18next.md) - [react-native-action-button](/zh-cn/react-native-action-button.md) diff --git a/zh-cn/README.md b/zh-cn/README.md index a5419fca..f1153bf1 100644 --- a/zh-cn/README.md +++ b/zh-cn/README.md @@ -163,7 +163,7 @@ | 137 | [react-native-json-tree](https://github.com/Dean177/react-native-json-tree) | 1.3.0 | − | − | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-json-tree.md) | | 138 | [react-native-image-gallery](https://github.com/meliorence/react-native-image-gallery) | 2.1.5 | − | [@react-native-oh-tpl/react-native-image-gallery](https://github.com/react-native-oh-library/react-native-image-gallery/releases) | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-image-gallery.md) | | 139 | [react-native-image-crop-picker](https://github.com/ivpusic/react-native-image-crop-picker) | 0.40.3 | 是 | [@react-native-oh-tpl/react-native-image-crop-picker](https://github.com/react-native-oh-library/react-native-image-crop-picker/releases) | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-image-crop-picker.md) | - +| 140 | [react-native-image-image-base64](https://github.com/SnappFr/react-native-image-base64) | 0.1.3 | 是 | - | [链接](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-image-base64.md) | ## 社区 [Github Organization: react-native-oh-library](https://github.com/react-native-oh-library) diff --git a/zh-cn/react-native-image-base64.md b/zh-cn/react-native-image-base64.md new file mode 100644 index 00000000..3e563cd3 --- /dev/null +++ b/zh-cn/react-native-image-base64.md @@ -0,0 +1,221 @@ +> 模板版本:v0.2.2 + +

+

react-native-image-base64

+

+

+ + Supported platforms + + + License + +

+ +> [!TIP] [Github 地址](https://github.com/react-native-oh-library/react-native-image-base64) + +## 安装与使用 + +请到三方库的 Releases 发布地址查看配套的版本信息:[@react-native-oh-tpl/react-native-image-base64 Releases](https://github.com/react-native-oh-library/react-native-image-base64/releases),并下载适用版本的 tgz 包。 + +进入到工程目录并输入以下命令: + +> [!TIP] # 处替换为 tgz 包的路径 + + + +#### **npm** + +```bash +npm install @react-native-oh-tpl/react-native-image-base64@file:# +``` + +#### **yarn** + +```bash +yarn add @react-native-oh-tpl/react-native-image-base64@file:# +``` + + + +下面的代码展示了这个库的基本使用场景: + +> [!WARNING] 使用时 import 的库名不变。 + +```js +import { StyleSheet, View, Button, Image } from "react-native"; +import React from "react"; +import ImgToBase64 from "react-native-image-base64"; +import { isSourceFile } from "typescript"; + +export default function PermissionsExample() { + const viewPer = React.useRef < View > null; + const ref = React.useRef(null); + const onCapture = (uri: any) => { + console.info("onCapture callback"); + setTxt(JSON.stringify(uri)); + }; + const onCaptureFailure = (err: any) => { + console.info("onCaptureFailure " + JSON.stringify(err)); + setTxt(JSON.stringify(err)); + }; + const [txt, setTxt] = React.useState(""); + return ( + +