📝 一、TextInput --- 文本输入框
TextInput 是 React Native 中的基础输入组件,用于让用户输入文本内容。
类似于 Web 中的 <input />。
✅ 基本用法
import React, { useState } from 'react';
import { View, TextInput, Text } from 'react-native';
export default function App() {
  const [text, setText] = useState('');
  return (
    <View style={{ padding: 20 }}>
      <Text>输入内容:</Text>
      <TextInput
        style={{
          height: 40,
          borderColor: 'gray',
          borderWidth: 1,
          paddingHorizontal: 8,
        }}
        placeholder="请输入内容"
        value={text}
        onChangeText={setText}
      />
      <Text>当前输入:{text}</Text>
    </View>
  );
}⚙️ 常用属性
| 属性名 | 类型 | 说明 | 
|---|---|---|
| value | string | 当前输入值(受控) | 
| defaultValue | string | 初始值(非受控) | 
| placeholder | string | 占位文字 | 
| onChangeText | (text: string) => void | 文本变化时回调 | 
| keyboardType | string | 键盘类型,如 default/numeric/email-address/phone-pad等 | 
| secureTextEntry | boolean | 是否密码输入(隐藏文字) | 
| maxLength | number | 最大输入长度 | 
| editable | boolean | 是否可编辑 | 
| multiline | boolean | 多行输入(类似 <textarea>) | 
| autoFocus | boolean | 自动聚焦 | 
| onFocus/onBlur | function | 获取或失去焦点事件 | 
| returnKeyType | string | 键盘右下角按钮文字,如 "done","go","search"等 | 
| style | object | 样式定义 | 
💡Tips
- 
onSubmitEditing在按下"完成"或"回车"键时触发;
- 
blurOnSubmit={false}可以在多行输入时防止键盘收起;
- 
可结合 useRef获取焦点:const inputRef = useRef(); inputRef.current.focus();
👆 二、TouchableOpacity --- 可点击且点击时透明度变化
TouchableOpacity 是最常用的点击容器组件。
点击时会有轻微的 透明度变化,适合自定义按钮。
✅ 基本用法
import React from 'react';
import { TouchableOpacity, Text, Alert } from 'react-native';
export default function App() {
  return (
    <TouchableOpacity
      style={{
        backgroundColor: '#2196F3',
        padding: 10,
        borderRadius: 6,
      }}
      activeOpacity={0.7}
      onPress={() => Alert.alert('按钮被点击!')}
    >
      <Text style={{ color: '#fff', textAlign: 'center' }}>点我一下</Text>
    </TouchableOpacity>
  );
}⚙️ 常用属性
| 属性名 | 类型 | 说明 | 
|---|---|---|
| onPress | function | 点击事件 | 
| onLongPress | function | 长按事件 | 
| activeOpacity | number | 点击时的不透明度(0 ~ 1,默认0.2) | 
| disabled | boolean | 是否禁用 | 
| style | object | 样式定义 | 
| delayPressIn/delayPressOut | number | 延迟响应点击时间(毫秒) | 
💡Tips
- 
可嵌套任意子元素(如 View,Text,Image);
- 
用于按钮、卡片点击、图片点击等场景; 
- 
对应 Web 习惯中 <button>或<div onClick>的作用。
✨ 三、TouchableHighlight --- 点击时背景高亮
TouchableHighlight 点击时会显示**背景高亮(变色)**效果。
适合需要明显按压反馈的 UI 元素(如列表项)。
✅ 基本用法
import React from 'react';
import { TouchableHighlight, Text, View, Alert } from 'react-native';
export default function App() {
  return (
    <TouchableHighlight
      underlayColor="#DDDDDD"
      onPress={() => Alert.alert('高亮按钮被点击!')}
      style={{
        backgroundColor: '#2196F3',
        borderRadius: 6,
        padding: 10,
      }}
    >
      <Text style={{ color: '#fff', textAlign: 'center' }}>高亮按钮</Text>
    </TouchableHighlight>
  );
}⚙️ 常用属性
| 属性名 | 类型 | 说明 | 
|---|---|---|
| onPress | function | 点击事件 | 
| underlayColor | string | 点击时显示的高亮背景色 | 
| activeOpacity | number | 点击时子元素透明度变化 | 
| onShowUnderlay/onHideUnderlay | function | 高亮显示或隐藏时回调 | 
| disabled | boolean | 禁用点击 | 
| style | object | 样式定义 | 
💡Tips
- 
比 TouchableOpacity视觉反馈更明显;
- 
适合 列表项点击效果 或 卡片点击高亮; 
- 
一般不推荐嵌套过多子组件,否则高亮效果可能异常。 
📚 对比总结
| 特性 | TextInput | TouchableOpacity | TouchableHighlight | 
|---|---|---|---|
| 用途 | 输入文本 | 点击触发事件 | 点击触发事件(带高亮) | 
| 交互反馈 | 输入框光标/键盘 | 透明度变化 | 背景高亮 | 
| 常用场景 | 登录输入框、搜索框 | 普通按钮、图标点击 | 列表项、卡片点击 | 
| 可嵌套子元素 | 否(仅文本) | 是 | 是 | 
| 推荐度 | ★★★★☆ | ★★★★★ | ★★★☆☆ |