React Native常用组件

React Native组件

React Native是一款优秀的跨平台移动应用开发框架,其核心优势在于能够使用JavaScript来编写原生应用。框架提供了丰富的组件库,使得开发者能够快速构建高性能的移动应用。本文将介绍15个常用的React Native组件,并给出每个组件的使用示例。

View

View 是一个用于布局的容器组件,支持Flexbox布局、样式、一些触摸处理等。

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

const Example = () => (
  <View style={styles.container}></View>
);

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

export default Example;

Text

Text 用于显示文本信息的组件。

jsx 复制代码
import React from 'react';
import { Text } from 'react-native';

const Example = () => <Text>动点智能欢迎您</Text>;

export default Example;

Image

Image 组件用于显示不同格式的图片,包括网络图片、静态资源等。

jsx 复制代码
import React from 'react';
import { Image } from 'react-native';

const Example = () => (
  <Image
    source={{ uri: 'https://example.com/logo.png' }}
    style={{ width: 100, height: 100 }}
  />
);

export default Example;

TextInput

TextInput 是一个允许用户输入文本的组件。

jsx 复制代码
import React, { useState } from 'react';
import { TextInput } from 'react-native';

const Example = () => {
  const [value, setValue] = useState('');

  return (
    <TextInput
      value={value}
      onChangeText={(text) => setValue(text)}
    />
  );
};

export default Example;

ScrollView

ScrollView 是一个可滚动的容器组件,用于展示超过屏幕大小的内容。

jsx 复制代码
import React from 'react';
import { ScrollView, Text } from 'react-native';

const Example = () => (
  <ScrollView>
    <Text>滚动视图中的内容</Text>
  </ScrollView>
);

export default Example;

StyleSheet

StyleSheet 提供了一种类似CSS样式表的方式来定义组件的样式。

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

const Example = () => <View style={styles.container}></View>;

const styles = StyleSheet.create({
  container: {
    padding: 20,
    borderRadius: 5,
  },
});

export default Example;

Button

Button 组件可用于接收用户点击行为,并触发相应的操作。

jsx 复制代码
import React from 'react';
import { Button, Alert } from 'react-native';

const Example = () => (
  <Button
    title="点击我"
    onPress={() => Alert.alert('按钮被点击')}
  />
);

export default Example;

TouchableOpacity

TouchableOpacity 是一个基于不透明度的触摸容器,按下时会降低透明度,以示交互。

jsx 复制代码
import React from 'react';
import { TouchableOpacity, Text } from 'react-native';

const Example = () => (
  <TouchableOpacity
    onPress={() => console.log('区域被点击')}
    style={{ padding: 10, backgroundColor: '#DDDDDD' }}
  >
    <Text>点击我</Text>
  </TouchableOpacity>
);

export default Example;

FlatList

FlatList 用于高效地渲染滚动列表,适用于长列表数据。

jsx 复制代码
import React, { useState } from 'react';
import { FlatList, Text } from 'react-native';

const Example = () => {
  const [items, setItems] = useState(['第一项', '第二项', '第三项']);

  return (
    <FlatList
      data={items}
      renderItem={({ item }) => <Text>{item}</Text>}
      keyExtractor={(item, index) => index.toString()}
    />
  );
};

export default Example;

SectionList

SectionList 是一个用于呈现分节数据的滚动列表。

jsx 复制代码
import React from 'react';
import { SectionList, Text } from 'react-native';

const Example = () => {
  const sections = [
    { title: '第一节', data: ['项1', '项2'] },
    { title: '第二节', data: ['项3', '项4'] },
  ];

  return (
    <SectionList
      sections={sections}
      renderItem={({ item }) => <Text>{item}</Text>}
      renderSectionHeader={({ section: { title } }) => (
        <Text style={{ fontWeight: 'bold' }}>{title}</Text>
      )}
      keyExtractor={(item, index) => index}
    />
  );
};

export default Example;

Switch

Switch 是一个切换组件,可用于显示开/关状态。

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

const Example = () => {
  const [isEnabled, setIsEnabled] = useState(false);
  const toggleSwitch = () => setIsEnabled(previousState => !previousState);

  return (
    <View>
      <Switch
        trackColor={{ false: "#767577", true: "#81b0ff" }}
        thumbColor={isEnabled ? "#f5dd4b" : "#f4f3f4"}
        onValueChange={toggleSwitch}
        value={isEnabled}
      />
    </View>
  );
};

export default Example;

Modal 组件是一种简单的覆盖全屏的模态视图。

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

const Example = () => {
  const [modalVisible, setModalVisible] = useState(false);

  return (
    <View style={{ marginTop: 50 }}>
      <Modal
        animationType="slide"
        transparent={true}
        visible={modalVisible}
        onRequestClose={() => {
          setModalVisible(!modalVisible);
        }}
      >
        <View style={{ marginTop: 22 }}>
          <View>
            <Text>模态框内容</Text>

            <TouchableOpacity
              onPress={() => {
                setModalVisible(!modalVisible);
              }}
            >
              <Text>隐藏模态框</Text>
            </TouchableOpacity>
          </View>
        </View>
      </Modal>

      <TouchableOpacity
        onPress={() => {
          setModalVisible(true);
        }}
      >
        <Text>显示模态框</Text>
      </TouchableOpacity>
    </View>
  );
};

export default Example;

ActivityIndicator

ActivityIndicator 组件用于显示一个圆形的加载提示符号。

jsx 复制代码
import React from 'react';
import { ActivityIndicator } from 'react-native';

const Example = () => (
  <ActivityIndicator size="large" color="#0000ff" />
);

export default Example;

Picker

Picker 组件让用户能从一个下拉列表中选择一个值。

jsx 复制代码
import React, { useState } from 'react';
import { Picker } from 'react-native';

const Example = () => {
  const [selectedValue, setSelectedValue] = useState("java");

  return (
    <Picker
      selectedValue={selectedValue}
      style={{ height: 50, width: 100 }}
      onValueChange={(itemValue, itemIndex) => setSelectedValue(itemValue)}
    >
      <Picker.Item label="Java" value="java" />
      <Picker.Item label="JavaScript" value="js" />
    </Picker>
  );
};

export default Example;

StatusBar

StatusBar 组件用来控制应用状态栏。

jsx 复制代码
import React from 'react';
import { StatusBar } from 'react-native';

const Example = () => (
  <>
    <StatusBar barStyle="dark-content" />
  </>
);

export default Example;

KeyboardAvoidingView

KeyboardAvoidingView 组件可以在键盘激活时自动调整视图的位置,以避免遮挡。

jsx 复制代码
import React from 'react';
import { KeyboardAvoidingView, TextInput } from 'react-native';

const Example = () => (
  <KeyboardAvoidingView behavior="padding" style={{ flex: 1, justifyContent: 'center' }}>
    <TextInput placeholder="在此输入内容" />
  </KeyboardAvoidingView>
);

export default Example;

React Native组件库中的这些组件是构建原生应用不可或缺的基础。掌握这些组件的使用是开发高质量移动应用的关键。开发者可以通过组合这些基础组件,实现丰富多彩、功能强大的用户界面。

相关推荐
多则惑少则明33 分钟前
Vue开发系列——自定义组件开发
前端·javascript·vue.js
用户2506949216140 分钟前
next框架打包.next文件夹部署
前端
程序猿小蒜43 分钟前
基于springboot的校园社团信息管理系统开发与设计
java·前端·spring boot·后端·spring
一叶难遮天43 分钟前
开启RN之旅——前端基础
前端·javascript·promise·js基础·es6/ts·npm/nrm
申阳44 分钟前
Day 4:02. 基于Nuxt开发博客项目-整合 Inspira UI
前端·后端·程序员
程序猿_极客1 小时前
【期末网页设计作业】HTML+CSS+JavaScript 猫咪主题网站开发(附源码与效果演示)
前端·css·html·课程设计·网页设计作业
IT古董1 小时前
【前端】从零开始搭建现代前端框架:React 19、Vite、Tailwind CSS、ShadCN UI 完整实战教程-第1章:项目概述与技术栈介绍
前端·react.js·前端框架
有点笨的蛋1 小时前
从零搭建小程序首页:新手也能看懂的结构解析与实战指南
前端·微信小程序
爱宇阳1 小时前
Vue3 前端项目 Docker 容器化部署教程
前端·docker·容器
Irene19911 小时前
前端缓存技术和使用场景
前端·缓存