news 2026/4/14 14:26:33

React Native跨平台鸿蒙开发实战系列:TextInput表单输入手机号功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
React Native跨平台鸿蒙开发实战系列:TextInput表单输入手机号功能

TextInput 是一个允许用户在应用中通过键盘输入文本的基本组件。本组件的属性提供了多种特性的配置,譬如自动完成、自动大小写、占位文字,以及多种不同的键盘类型(如纯数字键盘)等等。

React Native 的 TextInput 是用于文本输入的基础组件,支持多种键盘类型和输入控制。

最简单的用法就是丢一个TextInput到应用里,然后订阅它的onChangeText事件来读取用户的输入。注意,从 TextInput 里取值这就是目前唯一的做法!也就是使用在onChangeText中用setState把用户的输入写入到 state 中,然后在需要取值的地方从 this.state 中取出值。它还有一些其它的事件,譬如onSubmitEditing和onFocus。

核心特性

基本属性‌

  • onChangeText:监听文本变化,通过 setState 存储输入值
  • onSubmitEditing:提交文本时触发
  • maxLength:限制输入字符数
  • placeholder:占位文本提示

平台差异处理‌

-‌ Android‌:默认有底部边框和 padding,设置 padding: 0 可使样式与 iOS 一致
‌- iOS‌:父容器的 alignItems 可能失效,需要额外处理

常见问题解决方案

‌键盘遮挡问题‌,使用 KeyboardAvoidingView 组件自动处理键盘弹出时的布局调整:

<KeyboardAvoidingView style={{flex:1}}behavior="padding"keyboardVerticalOffset={64}><ScrollView style={{flex:1}}>{/* 页面内容 */}</ScrollView></KeyboardAvoidingView>

中文输入字数限制‌,直接使用 maxLength 在中文输入时会出现拼音字符被计入的问题,建议通过 onChangeText 自定义字数验证逻辑。

‌建议‌:在开发表单页面时,优先使用 KeyboardAvoidingView 包裹整个页面结构,避免键盘遮挡输入框影响用户体验。


有些属性仅在multiline为 true 或者为 false 的时候有效。此外,当multiline=false时,为元素的某一个边添加边框样式(例如:borderBottomColor,borderLeftWidth等)将不会生效。为了能够实现效果你可以使用一个View来包裹TextInput。

importReactfrom'react';import{View,Text,Dimensions,StyleSheet,Image,TextInput}from'react-native';//获取屏幕的宽高constscreenWidth=Math.round(Dimensions.get('window').width);constscreenHight=Math.round(Dimensions.get('window').height);constAppStyles=StyleSheet.create({wrap:{width:'100%',height:screenHight,backgroundColor:'#85BDFF'},title:{width:'100%',height:72,fontFamily:'OPPOSans, OPPOSans',fontWeight:'normal',paddingTop:50,fontSize:36,color:'#304057',lineHeight:72,textAlign:'center',fontStyle:'normal'},banner:{paddingTop:50,paddingRight:32,paddingLeft:32,},bannerItem:{paddingTop:10,display:'flex',flexDirection:'row',alignItems:'center',justifyContent:'center',width:'50%',}})functionApp(){return(<View style={AppStyles.wrap}><Text style={AppStyles.title}>鸿蒙ReactNative系统</Text><View style={AppStyles.banner}><View style={{display:'flex',flexDirection:'row',justifyContent:'space-between'}}><View style={AppStyles.bannerItem}><Image style={{width:27,height:27}}source={require('./images/checked.png')}></Image><Text style={{paddingLeft:4}}>实时业绩便捷查询</Text></View><View style={AppStyles.bannerItem}><Image style={{width:27,height:27}}source={require('./images/checked.png')}></Image><Text style={{paddingLeft:4}}>订单状态轻松把控</Text></View></View><View style={{display:'flex',flexDirection:'row',justifyContent:'space-between'}}><View style={AppStyles.bannerItem}><Image style={{width:27,height:27}}source={require('./images/checked.png')}></Image><Text style={{paddingLeft:4}}>宣传数据全程管理</Text></View><View style={AppStyles.bannerItem}><Image style={{width:27,height:27}}source={require('./images/checked.png')}></Image><Text style={{paddingLeft:4}}>海量素材一站转发</Text></View></View></View><Image style={{width:289,height:182,display:'flex',alignSelf:'center'}}source={require('./images/login-bg.png')}></Image><View><TextInput style={{width:289,height:48,borderRadius:10,backgroundColor:'#FFFFFF',paddingLeft:16,paddingRight:16,fontSize:14,color:'#304057'}}placeholder="请输入手机号"></TextInput></View></View>);}exportdefaultApp;


TextInput 是一个用于文本输入的基础组件,具备 onChangeText 和 onSubmitEditing 属性。它允许用户输入文本,并在输入变化和提交时触发相应的事件。这是一个在React Native应用中非常基础且常用的组件。

TextInput 文本输入框:

  • React Native中的文本输入框使用和鸿蒙比较相近,可能是因为 RN 首先封装鸿蒙端的缘故(这点对鸿蒙开发者来说是个好消息)
  • TextInput也是继承自 View,所以 View 的属性 TextInput 也能使用,一些样式类的属性可以参照 View 的相关属性

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 14:24:44

2024多模态视觉:Qwen2-VL / SAM 2 / Molmo

一、概述 2024 年多模态视觉方向的代表性工作&#xff0c;已经不再停留在“把图像输入接到大语言模型”这一初级阶段&#xff0c;而是沿着更明确的三条路线持续演进&#xff1a; 通用视觉语言模型&#xff08;VLM&#xff09;路线&#xff1a;以 Qwen2-VL 为代表&#xff0c;重…

作者头像 李华
网站建设 2026/4/14 14:24:16

Illustrator脚本工具箱:如何用15个免费工具将设计效率提升300%

Illustrator脚本工具箱&#xff1a;如何用15个免费工具将设计效率提升300% 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否曾经在Adobe Illustrator中重复执行相同的操作&…

作者头像 李华
网站建设 2026/4/14 14:23:44

Qt样式表实战:精准定制QGroupBox标题栏字体样式

1. Qt样式表实战&#xff1a;精准定制QGroupBox标题栏字体样式 在Qt界面开发中&#xff0c;QGroupBox是个非常实用的容器控件&#xff0c;它能够将相关控件分组并添加标题栏。但很多开发者都遇到过这样的困扰&#xff1a;当我们想调整标题栏的字体样式时&#xff0c;内容区域的…

作者头像 李华
网站建设 2026/4/14 14:23:09

多模态大模型训练数据构建策略,从数据孤岛到跨模态语义统一的终极跃迁(含NASA、MSRA、商汤联合脱敏数据集结构图)

第一章&#xff1a;多模态大模型训练数据构建策略 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的性能上限高度依赖于训练数据的质量、覆盖广度与模态对齐精度。构建高质量训练语料并非简单堆叠图像-文本对&#xff0c;而需系统性设计采集、清洗、标注、对齐与增…

作者头像 李华
网站建设 2026/4/14 14:23:08

实战指南 -- Cadence 17.4 一站式安装与和谐全流程

1. 准备工作&#xff1a;获取安装包与工具 第一次装Cadence 17.4的朋友们注意了&#xff0c;这事儿就像组装电脑一样&#xff0c;准备工作没做好&#xff0c;后面全是坑。我前后装了不下十次&#xff0c;总结出最稳的方案就是吴川斌老师的资源包。这位大佬在电子设计圈子里可是…

作者头像 李华