React Native组件之TextInput

一、简介

一个用于文本输入的基本组件。内置了多种特性,比如自动完成,自动大小写,以及多种不同的键盘类型。

二、TextInput

从TextInput里取值使用onChangeText事件这就是目前唯一的做法。

import React, { Component } from ‘react‘;
import { AppRegistry, TextInput } from ‘react-native‘;

class UselessTextInput extends Component {
  constructor(props) {
    super(props);
    this.state = { text: ‘Useless Placeholder‘ };
  }

  render() {
    return (
      <TextInput
        style={{height: 40, borderColor: ‘gray‘, borderWidth: 1}}
        onChangeText={(text) => this.setState({text})}
        value={this.state.text}
      />
    );
  }
}

// App registration and rendering
AppRegistry.registerComponent(‘AwesomeProject‘, () => UselessTextInput);

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

import React, { Component } from ‘react‘;
import { AppRegistry, View, TextInput } from ‘react-native‘;

class UselessTextInput extends Component {
  render() {
    return (
      <TextInput
        {...this.props} // 将父组件传递来的所有props传递给TextInput;比如下面的multiline和numberOfLines
        editable = {true}
        maxLength = {40}
      />
    );
  }
}

class UselessTextInputMultiline extends Component {
  constructor(props) {
    super(props);
    this.state = {
      text: ‘Useless Multiline Placeholder‘,
    };
  }

  // 你可以试着输入一种颜色,比如red,那么这个red就会作用到View的背景色样式上
  render() {
    return (
     <View style={{
       backgroundColor: this.state.text,
       borderBottomColor: ‘#000000‘,
       borderBottomWidth: 1 }}
     >
       <UselessTextInput
         multiline = {true}
         numberOfLines = {4}
         onChangeText={(text) => this.setState({text})}
         value={this.state.text}
       />
     </View>
    );
  }
}

// App registration and rendering
AppRegistry.registerComponent(
 ‘AwesomeProject‘,
 () => UselessTextInputMultiline
);

三、TextInput的API

  1.  autoCapitalize    enmu(‘none‘,‘sentences‘,‘words‘,‘characters‘)   控制TextInput是否自动将特定的字符切换为大写。  
    • characters: 所有字符
    • words: 单词首字符
    • sentences: 每句话首字符(默认)
    • none: 不能自动切换任何字符为大写
  1. autoCorrect   Boolean  是否关闭拼写自动修正
  2. autoFocus      Boolean      在componentDidMount后是否自动聚焦
  3. blurOnSubmit   Boolean    true =>文本框在提交时失焦。 单行输入框默认true,多行false。(多行设为true,按下回车键失焦+触发onSubmitEditing)
  4. caretHidden    Boolean     是否隐藏光标 默认值false
  5. defaultValue  String        文本初始值
  6. editable       Boolean      是否不可编辑   默认值true
  7. keyboardType   Enum("default","numeric","email-address","ascii-capabale","numbers-and-punctuation","url","number-pad","phone-pad","name-phone-pad","decimal-pad","twitter","web-search") 其中 default  numeric  email-address所有平台通用。
  8. maxLength   Number  最大输入长度
  9. multiline    Boolean    是否可以输入多行文字 默认false
  10. onBlur  Function   文本库失焦回调函数
  11. onChange  Function  文本框内容发生变化回调函数
  12. onChangeText   Function  文本框内容发生变化回调函数.改变后的内容作为参数传递
  13. onFocus  Function  聚焦的时候调用
  14. onLayout Function   组件挂载或者布局变化时调用参数为{x,y, width, height}
  15. onScroll   Function   内容滚动时持续调用,传回参数{ nativeEvent:{ contentOffset:{x,y}}} 安卓上出于性能考虑不会提供contentSize参数
  16. onSelectChange   Function  长按选择文本时,选择范围变化时调用。 { nativeEvent: {selection: { start, end}}}
  17. onSubmitEditing   Function  软键盘确定/提交按钮按下时候回调。如果multiline={true},此属性不可用
  18. placeholder  String  占位
  19. placeholderTextColor  占位符显示的文字颜色
  20. secureTextEntry  Boolean   是否遮挡之前的输入文字(密码) 默认false
  21. selectTextOnFocus  Boolean  是否在聚焦时全选
  22. selection {start: number, end: number} 
  23. selectionColor 设置输入框高亮时颜色
  24. style 
  25. value 文本框中的文字内容

四、方法

isFocused(): Boolean  返回值表明当前输入框是否聚焦

clear()  清空输入框的内容

时间: 2024-08-28 20:13:15

React Native组件之TextInput的相关文章

React Native 组件之TextInput

React Native 组件之TextInput类似于iOS中的UITextView或者UITextField,是作为一个文字输入的组件,下面的TextInput的用法和相关属性. /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 2016-09-16 * TextInput 常用属性 */ import React, { Component } from 'react'; import

Android React Native组件的生命周期及回调函数

熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开发中,React Native组件的生命周期,大致分为三个阶段,分别是: 1.组件第一次绘制阶段,这个阶段主要是组件的加载和初始化: 2.组件在运行和交互阶段,这个阶段组件可以处理用户交互,或者接收事件更新界面: 3.组件卸载消亡的阶段,这个阶段主要是组件的清理工作. 在Android React

React Native组件生命周期

概述 所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解空间的生命周期,是开发中必须掌握的一个知识点.就像 Android 开发中组件 一样,React Native的组件也有生命周期(Lifecycle). React Native组件的生命周期大致上可以划分为实例化阶段.存在阶段和销毁阶段.我们只有在理解组件生命周期的基础上,才能开发出高性能的app. React Native中组件的生命周期大致可以用以下图表示: 如图: 第一阶段:是组件第一次绘制阶段,如图中的上面虚线框内,

React Native组件之Switch和Picker和Slide

React Native组件Switch类似于iOS中的UISwitch:组件Slide类似于iOS中UIslider,组件Picker类似于iOS的UIPickerView.他们的使用方法和相关属性如下: /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 2016-09-28 * Switch 开关组件 Picker 选择器 和slide 进度条 */ import React, { C

React Native组件之ScrollView

React Native组件ScrollView类似于iOS中的UIScrollView.其使用方法和属性如下: /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 ScrollView 的常用属性 * 2016-09-19 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text,

Android React Native组件的生命周期

和Android一样,React的组件也有对应的生命周期.Android React Native组件的生命周期可以总的概括为下面这一张图. 可以把组件生命周期大致分为三个阶段: 第一阶段:是组件第一次绘制阶段,如图中的上面虚线框内,在这里完成了组件的加载和初始化: 第二阶段:是组件在运行和交互阶段,如图中左下角虚线框,这个阶段组件可以处理用户交互,或者接收事件更新界面: 第三阶段:是组件卸载消亡的阶段,如图中右下角的虚线框中,这里做一些组件的清理工作. 生命周期回调函数总共有10个. obje

React Native组件的结构和生命周期

React Native组件的结构和生命周期 一.组件的结构 1.导入引用 可以理解为C++编程中的头文件. 导入引用包括导入react native定义的组件.API,以及自定义的组件. 1.1 导入组件 1.2 导入API 1.3 导入自定义组件 2.组件的声明 组件的生命分为组件的定义和样式.组件的定义有各种组件的组成结构.方法的定义. 2.1 组件的定义 2.2 组件样式 组件样式的定义可以直接在组件的定义中的style中定义.但是对于样式复杂的组件需要组件样式. 3.组件的注册或导出

React Native组件之ScrollView 和 StatusBar和TabBarIos

React Native中的组件ScrollView类似于iOS中的UIScrollView,其基本的使用方法和熟悉如下: /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 ScrollView 的常用属性 * 2016-09-19 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet,

React Native 组件之Image

Image组件类似于iOS中UIImage控件,该组件可以通过多种方式加载图片资源. 使用方式,加载方式有如下几种: /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 * image 加载的三种方式+设置图片的内容模式 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, I