模板版本:v0.4.0

react-native-material-dropdown

本项目基于 react-native-material-dropdown 开发。

该第三方库支持直接从 npm 下载,新的包名为:@react-native-ohos/react-native-material-dropdown,版本所属关系如下:

三方库名称 三方库版本 发布信息 支持RN版本 Autolink 编译API版本 社区基线版本 npm地址
@react-native-ohos/react-native-material-dropdown ~0.12.0 Gitcode Releases 0.77.* / 0.82.* 否 API12+ 0.11.1 Npm Address
@react-native-oh-tpl/react-native-material-dropdown ~0.11.1 Github Releases 0.72.* 否 API12+ 0.11.1 Npm Address

安装与使用

进入到工程目录并输入以下命令:

npm

# 0.72 
npm install @react-native-oh-tpl/react-native-material-dropdown

# 0.77/0.82
npm install @react-native-ohos/react-native-material-dropdown

yarn

# 0.72 
yarn add @react-native-oh-tpl/react-native-material-dropdown

# 0.77 /0.82
yarn add @react-native-ohos/react-native-material-dropdown

下面的代码展示了这个库的基本使用场景:

使用时 import 的库名不变。

import React, { Component } from 'react';
import { Dropdown } from 'react-native-material-dropdown';

class Example extends Component {
  render() {
    let data = [{
      value: 'Banana',
    }, {
      value: 'Mango',
    }, {
      value: 'Pear',
    }];

    return (
      <Dropdown
        label='Favorite Fruit'
        data={data}
      />
    );
  }
}

本库 HarmonyOS 侧实现依赖@react-native-oh-tpl/react-native-material-textfield和@react-native-oh-tpl/react-native-material-buttons 的代码,如已在 HarmonyOS 工程中引入过该库,则无需再次引入,可跳过本章节步骤,直接使用。

如未引入请参照@react-native-oh-tpl/react-native-material-textfield 文档

和 @react-native-oh-tpl/react-native-material-buttons 文档进行引入

约束与限制

兼容性

本文档内容基于以下环境验证通过:

  1. RNOH: 0.72.33; SDK:OpenHarmony 5.0.0.71(API Version 12 Release); IDE:DevEco Studio 5.0.3.900; ROM:NEXT.0.0.71;
  2. RNOH: 0.77.18; SDK: HarmonyOS 6.0.0 Release SDK; IDE: DevEco Studio 6.0.0.868; ROM: 6.0.0.112;
  3. RNOH: 0.82.1; SDK: HarmonyOS 6.0.0 Release SDK; IDE: DevEco Studio 6.0.0.858; ROM: 6.0.0.112;

属性

此组件有以下属性:

"Platform"列表示该属性在原三方库上支持的平台。

"HarmonyOS Support"列为 yes 表示 HarmonyOS 平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。

Name Description Type Required Platform HarmonyOS Support
label 标签文本 String No iOS/Android Yes
error 错误提示文本 String No iOS/Android Yes
animationDuration 动画持续时间(毫秒) Number No iOS/Android Yes
fontSize 字体大小 Number No iOS/Android Yes
labelFontSize 标签字体大小 Number No iOS/Android Yes
baseColor 基础颜色 String No iOS/Android Yes
textColor 文本颜色 String No iOS/Android Yes
itemColor 下拉项文本颜色(未激活项) String No iOS/Android Yes
selectedItemColor 下拉项文本颜色(激活项) String No iOS/Android Yes
disabledItemColor 下拉项文本颜色(禁用项) String No iOS/Android Yes
dropdownPosition 下拉菜单位置(未定义时为动态) Number No iOS/Android Yes
itemCount 可见下拉项数量 Number No iOS/Android Yes
itemPadding 下拉项垂直内边距 Number No iOS/Android Yes
itemTextStyle 下拉项文本样式 Object No iOS/Android Yes
dropdownOffset 下拉菜单偏移量 Object No iOS/Android Yes
dropdownMargins 下拉菜单外边距 Object No iOS/Android Yes
data 下拉项数据 Array[] No iOS/Android Yes
value 选中值 String No iOS/Android Yes
containerStyle 容器样式 Object No iOS/Android Yes
overlayStyle 覆盖层样式 Object No iOS/Android Yes
pickerStyle 选择器样式 Object No iOS/Android Yes
shadeOpacity 下拉项阴影透明度 Number No iOS/Android Yes
rippleOpacity 涟漪效果透明度 Number No iOS/Android Yes
rippleInsets 涟漪效果内边距 Object No iOS/Android Yes
rippleCentered 涟漪效果是否居中 Boolean No iOS/Android Yes
renderBase 渲染基础组件 Function No iOS/Android Yes
renderAccessory 渲染文本字段附件 Function No iOS/Android Yes
valueExtractor 值提取函数(参数:item, index) Function No iOS/Android Yes
labelExtractor 从项中提取标签 (参数: item, index) Function No iOS/Android Yes
propsExtractor 属性提取函数(参数:item, index) Function No iOS/Android Yes
onChangeText 值变更回调函数 Function No iOS/Android Yes

API

"Platform"列表示该属性在原三方库上支持的平台。

"HarmonyOS Support"列为 yes 表示 HarmonyOS 平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。

Name Description Type Required Platform HarmonyOS Support
focus() 获取焦点 No iOS/Android Yes
blur() 释放焦点 No iOS/Android Yes
selectedIndex() 获取选中项索引 Number No iOS/Android Yes
value() 获取当前值 String No iOS/Android Yes
selectedItem() 获取选中项 Object No iOS/Android Yes
isFocused() 获取当前焦点状态 Boolean No iOS/Android Yes

遗留问题

其他

  • renderAccessory属性:需要指定renderRightAccessory或者renderLeftAccessory

开源协议

本项目基于 The BSD License (BSD ) ,请自由地享受和参与开源。