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

相关推荐
花落文心1 小时前
使用 html2canvas + jspdf 实现页面元素下载为pdf文件
前端·javascript·pdf
掘金安东尼1 小时前
🚀 6 行 HTML,让应用瞬间“起飞”:Speculation Rules API 全解析
前端·api·浏览器
望获linux2 小时前
【Linux基础知识系列】第一百一十篇 - 使用Nmap进行网络安全扫描
java·linux·开发语言·前端·数据库·信息可视化·php
乘乘凉2 小时前
Python中函数的闭包和装饰器
前端·数据库·python
Fantastic_sj3 小时前
部分CSS笔试题讲解
前端·css
雷达学弱狗5 小时前
链式法则解释上游梯度应用
开发语言·前端·javascript
爱隐身的官人6 小时前
爬虫基础学习-爬取网页项目(二)
前端·爬虫·python·学习
Jackson@ML7 小时前
使用字节旗下的TREA IDE快速开发Web应用程序
前端·ide·trea
烛阴10 小时前
解锁 TypeScript 的元编程魔法:从 `extends` 到 `infer` 的条件类型之旅
前端·javascript·typescript
前端开发爱好者10 小时前
弃用 ESLint + Prettier!快 35 倍的 AI 格式化神器!
前端·javascript·vue.js