• [RN] React Native 下列表 FlatList 和 SectionList


    1、FlatList

    FlatList组件用于显示一个垂直的滚动列表,其中的元素之间结构近似而仅数据不同。

    FlatList更适于长列表数据,且元素个数可以增删。和ScrollView不同的是,FlatList并不立即渲染所有元素,而是优先渲染屏幕上可见的元素。

    FlatList组件必须的两个属性是datarenderItemdata是列表的数据源,而renderItem则从数据源中逐个解析数据,然后返回一个设定好格式的组件来渲染。

    示例代码:

    import React, {Component} from "react";
    import {FlatList, StyleSheet, Text, View} from "react-native";
    
    var data = [
        {key: "黑猫警长2", val: "美国"},
        {key: "我是特种兵", val: "中国"},
        {key: "变形金刚2", val: "美国"},
        {key: "流浪地球", val: "中国"},
    ];
    
    export default class HelloWorld extends Component {
        render() {
            return (
                <View style={styles.container}>
                    <FlatList
                        data={data}
                        renderItem={
                            ({item}) =>
                                <Text style={styles.item}>{item.key} [{item.val}]</Text>
                        }
                    />
                </View>
            )
        }
    }
    
    const styles = StyleSheet.create(
        {
            container: {
                flex: 1,
                paddingTop: 22,
                backgroundColor: "#cccccc",
            },
            item: {
                padding: 10,
                fontSize: 18,
                height: 44,
            }
        }
    );

    效果如下:

    2、SectionList

    适用于要渲染的是一组需要分组的数据,也许还带有分组标签的

    示例代码:

    import React, {Component} from "react";
    import {SectionList, StyleSheet, Text, View} from "react-native";
    
    var data = [
        {title2: '中国', data: ['万里长城',"故宫","颐和园"]},
        {title2: '美国', data: ['白宫',"拉斯维加斯"]},
    ];
    
    export default class HelloWorld extends Component {
        render() {
            return (
                <View style={styles.container}>
                    <SectionList sections={data}
                                 renderItem={
                                     ({item}) =>
                                         <Text style={styles.item}>{item}</Text>
                                 }
                                 renderSectionHeader={({section}) => <Text
                                     style={styles.sectionHeader}>{section.title2}</Text>}
                                 keyExtractor={(item, index) => index}
                    />
                </View>
            )
        }
    }
    
    const styles = StyleSheet.create({
        container: {
            flex: 1,
            paddingTop: 22
        },
        sectionHeader: {
            paddingTop: 2,
            paddingLeft: 10,
            paddingRight: 10,
            paddingBottom: 2,
            fontSize: 18,
            fontWeight: 'bold',
            backgroundColor: 'rgba(247,247,247,1.0)',
        },
        item: {
            padding: 10,
            fontSize: 16,
            height: 44,
        },
    })

    效果如下:

    本博客地址: wukong1688

    本文原文地址:https://www.cnblogs.com/wukong1688/p/10804252.html

    转载请著名出处!谢谢~~

  • 相关阅读:
    《Linux内核设计与实现》读书笔记 第十八章 调试
    《Linux内核设计与实现》读书笔记 第五章 系统调用
    [题解] LuoguP5488 差分与前缀和
    [题解] LuoguP4655 [CEOI2017]Building Bridges
    [题解] Tenka1 Programmer Contest 2019 E
    [题解] LuoguP4284 [SHOI2014]概率充电器
    长链剖分学习笔记
    [题解] LuoguP4292 [WC2010]重建计划
    [题解] LuoguP6197 [EER1]礼物
    [题解] LuoguP3980 [NOI2008]志愿者招募
  • 原文地址:https://www.cnblogs.com/wukong1688/p/10804252.html
Copyright © 2020-2023  润新知