react-native分组列表SectionList

学习交流:https://gitee.com/potato512/Learn_ReactNative

react-native学习交流QQ群:806870562


效果

代码示例

import React,{ Component } from 'react';
import {
    StyleSheet,View,Text,SectionList
} from 'react-native';

type Props = {};
export default class SectionListPage extends Component<Props> {

    // 定义分组中的每个单元格
    listRow = (info) => {
        var txt = '  ' + info.item.type;
        return <Text style={styles.sectionItem}>{txt}</Text>
    };

    // 定义分组
    listSection = (info) => {
        var txt = info.section.key;
        return <View style={styles.sectionHeader}><Text style={styles.sectionTxtHeader}>{txt}</Text></View>
    };

    render() {

        // 定义数据源
        let sections = [
            { key: "UI View",data: [{ type: "View" },{ type: "Text" },{ type: "Image" },{type: "TextInput"},{type: "StyleSheet"},{type: "ScrollView"}] },{ key: "UI Other",data: [{ type: "ActivityIndicator" },{ type: "Alert" },{ type: "Animated" },{ type: "CameraRoll" },{ type: "Clipboard" },{type:"Demensions"},{type:"KeyboardAvoiding"},{type:"Linking"},{type:"Modal"},{type:"Pixedration"},{type:"RefreshControl"},{type:"StatusBar"},{type:"WebView"}] },{ key: "UI List",data: [{ type: "FlatList" },{ type: "SectionList" }] },{ key: "UI iOS",data: [{ type: "ActionSheet" },{ type: "AlertIOS" },{ type: "DatePickerIOS" },{ type: "ImagePickerIOS" },{ type: "NavigatorIOS" },{ type: "ProgressView" },{type:"PushNotificationIOS"},{type:"SegmentControlIOS"},{type:"TabBarIOS"}] },{ key: "UI Android",data: [{ type: "BackHandleAndroid" },{ type: "DatePickerAndroid" },{type:"DrawLayoutAndroid"},{type:"PermissionsAndroid"},{type:"ProgressBarandroid"},{type:"TimePickerAndroid"},{type:"ToastAndroid"},{type:"Toolbarandroid"},{type:"ViewAndroid"}] },{ key: "UI userInterface",data: [{ type: "Button" },{ type: "Picker" },{type: "Slider"},{type:"Switch"}] },];

        return(
            <View>
                /* 分组列表*/
                <SectionList
                    renderSectionHeader={this.listSection}
                    renderItem={this.listRow}
                    ItemSeparatorComponent={() => <View style={{height:0.5,backgroundColor:"#FF0000"}}></View>}
                    ListHeaderComponent={HeaderComponent}
                    ListFooterComponent={FooterComponent}
                    sections={sections}>
                </SectionList>

            </View>
        )
    }
}

// 定义分组列表表头
const HeaderComponent = (() => <View style={styles.headerStyle}><Text style={styles.headerTxtStyle}>组件学习</Text></View>);
// 定义分组列表表尾
const FooterComponent = (() => <View style={styles.footerStyle}><Text style={styles.footerTxtStyle}>组件学习</Text></View>);

// 样式定义
const styles = StyleSheet.create({
    headerStyle: {
        height: 50,paddingHorizontal:20,backgroundColor:"#E6E6FA"
    },headerTxtStyle: {
        lineHeight: 50,textAlign:"left",fontSize:30,color:"#8A2BE2"
    },footerStyle: {
        height: 50,backgroundColor:"#000000"
    },footerTxtStyle: {
        lineHeight:50,textAlign:"right",fontSize:20,color:"#EE82EE"
    },sectionHeader: {
        height:40,paddingHorizontal:10,justifyContent:"center",// alignItems:"center",},sectionTxtHeader: {
        fontSize:26,sectionItem: {
        height:30,textAlign: "center",color: "#FFFFFF",fontSize:24,backgroundColor: '#9CEBBC'
    }
});

在App.js中的引用

import SectionListPage from "./Components/ListPage/SectionListPage";

type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <SectionListPage/>
    );
  }
}

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...