React Native第六章

🧱 一、Modal 模态框组件

✅ 基本介绍

Modal 用于在当前页面上方显示一个浮层内容(比如弹窗、提示、加载中等)。

它会阻止用户与底层视图交互。


🔧 常用属性(props)

属性 类型 默认值 说明
animationType `'none' 'slide' 'fade'`
transparent boolean false 是否背景透明
visible boolean false 是否显示Modal
onRequestClose function - Android物理返回键触发的回调
onShow function - Modal显示时的回调
statusBarTranslucent boolean false 是否使状态栏透明(仅Android)

🧩 示例:一个简单的弹窗

复制代码
import React, { useState } from 'react';
import { View, Text, Modal, Button, StyleSheet } from 'react-native';

const ModalExample = () => {
  const [visible, setVisible] = useState(false);

  return (
    <View style={styles.container}>
      <Button title="打开弹窗" onPress={() => setVisible(true)} />

      <Modal
        animationType="slide"
        transparent={true}
        visible={visible}
        onRequestClose={() => setVisible(false)}
      >
        <View style={styles.modalBackground}>
          <View style={styles.modalBox}>
            <Text style={{ fontSize: 18, marginBottom: 10 }}>这是一个Modal弹窗!</Text>
            <Button title="关闭" onPress={() => setVisible(false)} />
          </View>
        </View>
      </Modal>
    </View>
  );
};

const styles = StyleSheet.create({
  container: { flex: 1, justifyContent: 'center', alignItems: 'center' },
  modalBackground: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'rgba(0,0,0,0.5)' },
  modalBox: { backgroundColor: 'white', padding: 20, borderRadius: 10, width: 250, alignItems: 'center' },
});

export default ModalExample;

🌈 二、StatusBar 状态栏组件

✅ 基本介绍

StatusBar 用来控制手机顶部状态栏的样式(颜色、背景、可见性等)。


🔧 常用属性

属性 类型 默认值 说明
barStyle `'default' 'light-content' 'dark-content'`
backgroundColor string - 状态栏背景色(Android)
hidden boolean false 是否隐藏状态栏
translucent boolean false 状态栏是否透明(Android)
animated boolean false 样式变化是否使用动画

🧩 示例:设置浅色背景深色文字状态栏

复制代码
import React from 'react';
import { View, Text, StatusBar, StyleSheet } from 'react-native';

const StatusBarExample = () => {
  return (
    <View style={styles.container}>
      {/* 状态栏样式 */}
      <StatusBar
        barStyle="dark-content"
        backgroundColor="#f5f5f5"
        translucent={false}
      />
      <Text style={styles.text}>状态栏示例</Text>
    </View>
  );
};

const styles = StyleSheet.create({
  container: { flex: 1, backgroundColor: '#f5f5f5', justifyContent: 'center', alignItems: 'center' },
  text: { fontSize: 20 },
});

export default StatusBarExample;

⚙️ 三、Switch 开关组件

✅ 基本介绍

Switch 是一个开关控件,常用于布尔选项(开 / 关)。


🔧 常用属性(props)

属性 类型 默认值 说明
value boolean false 当前是否打开
onValueChange (value: boolean) => void - 当值变化时的回调
disabled boolean false 是否禁用开关
trackColor { false?: string; true?: string } - 开关轨道颜色
thumbColor string - 开关圆点颜色
ios_backgroundColor string - iOS上关闭状态下轨道颜色

🧩 示例:控制开关状态

复制代码
import React, { useState } from 'react';
import { View, Text, Switch, StyleSheet } from 'react-native';

const SwitchExample = () => {
  const [isEnabled, setIsEnabled] = useState(false);

  return (
    <View style={styles.container}>
      <Text style={styles.text}>开关状态:{isEnabled ? '开启' : '关闭'}</Text>
      <Switch
        value={isEnabled}
        onValueChange={setIsEnabled}
        trackColor={{ false: '#ccc', true: '#81b0ff' }}
        thumbColor={isEnabled ? '#007aff' : '#f4f3f4'}
        ios_backgroundColor="#ccc"
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: { flex: 1, justifyContent: 'center', alignItems: 'center' },
  text: { fontSize: 18, marginBottom: 10 },
});

export default SwitchExample;

🧭 总结对比

组件 用途 是否遮挡内容 是否交互式 典型场景
Modal 弹窗显示内容 ✅ 是 ✅ 是 提示、确认框、加载中
StatusBar 状态栏样式控制 ❌ 否 ❌ 否 改变顶部状态栏颜色、透明度
Switch 开关控件 ❌ 否 ✅ 是 设置开关、选项启用禁用

相关推荐
killerbasd2 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
橘子编程3 小时前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript
叫我一声阿雷吧4 小时前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint
大家的林语冰4 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong234 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习
天若有情6735 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
软件工程师文艺5 小时前
从0到1:Claude Code如何用React构建CLI应用
前端·react.js·前端框架
M ? A5 小时前
Vue 迁移 React 实战:VuReact 一键自动化转换方案
前端·vue.js·经验分享·react.js·开源·自动化·vureact
yuki_uix5 小时前
重排、重绘与合成——浏览器渲染性能的底层逻辑
前端·javascript·面试
止观止6 小时前
拥抱 ESNext:从 TC39 提案到生产环境中的现代 JS
开发语言·javascript·ecmascript·esnext