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

相关推荐
2766958292几秒前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
golitter.6 分钟前
Ajax和axios简单用法
前端·ajax·okhttp
PleaSure乐事15 分钟前
【Node.js】内置模块FileSystem的保姆级入门讲解
javascript·node.js·es6·filesystem
雷特IT25 分钟前
Uncaught TypeError: 0 is not a function的解决方法
前端·javascript
长路 ㅤ   1 小时前
vite学习教程02、vite+vue2配置环境变量
前端·vite·环境变量·跨环境配置
亚里士多没有德7751 小时前
强制删除了windows自带的edge浏览器,重装不了怎么办【已解决】
前端·edge
micro2010141 小时前
Microsoft Edge 离线安装包制作或获取方法和下载地址分享
前端·edge
.生产的驴1 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
awonw1 小时前
[前端][easyui]easyui select 默认值
前端·javascript·easyui
老齐谈电商1 小时前
Electron桌面应用打包现有的vue项目
javascript·vue.js·electron