[react-native] 10 组件 sectionlist

因为 section list 是对数据展示的优化组件。我们需要数据,为了节省时间,直接从官网上CV过来 示例模版

官网地址

然后接下来我们可以看到这个数据常量,以后我们的数据也按照这个格式或者在这个格式的基础上修改就行。

js 复制代码
//数据
const DATA = [  
    {  
        title: 'Main dishes',  
        data: ['Pizza', 'Burger', 'Risotto'],  
    },  
    {  
        title: 'Sides',  
        data: ['French Fries', 'Onion Rings', 'Fried Shrimps'],  
    },  
    {  
        title: 'Drinks',  
        data: ['Water', 'Coke', 'Beer'],  
    },  
    {  
        title: 'Desserts',  
        data: ['Cheese Cake', 'Ice Cream'],  
    },  
];

必知的4大属性

js 复制代码
<SafeAreaView style={styles.container}>  
    <SectionList  
        sections={DATA}  
        keyExtractor={(item, index) => item + index}  
        renderItem={({item}) => 
            (<View style={styles.item}>  
                <Text style={styles.title}>{item}</Text>  
             </View>  
            )}  
        renderSectionHeader={({section: {title}}) => (  
        <Text style={styles.header}>{title}</Text>)}  
    />  
</SafeAreaView>

元素与元素之间的分隔符

js 复制代码
ItemSeparatorComponent={() => {  
    //声明项目之间的分隔符  
    return <View style={{borderBottomWidth:1, borderBottomColor:'red'}} />  
}}

数据为空的时候所展示的组件

js 复制代码
ListEmptyComponent={()=>{  
    //列表数据为空的时候,激活展示的组件  
    return <Text style={{fontSize:30}}>404 Forbidden</Text>  
}}

我们再去把上面的数据注释掉

js 复制代码
const DATA = [  
// {  
// title: 'Main dishes',  
// data: ['Pizza', 'Burger', 'Risotto'],  
// },  
// {  
// title: 'Sides',  
// data: ['French Fries', 'Onion Rings', 'Fried Shrimps'],  
// },  
// {  
// title: 'Drinks',  
// data: ['Water', 'Coke', 'Beer'],  
// },  
// {  
// title: 'Desserts',  
// data: ['Cheese Cake', 'Ice Cream'],  
// },  
];

这里需要注意,我们只注释掉里面的数据,不要把变量也给注释掉了。然后,数据没有了之后,我们就会看到我们在数据没有的时候,所指定想要展示的内容。

下拉刷新 属性如何控制呢

js 复制代码
// 下拉刷新  
refreshing={false}  
onRefresh={()=>{  
    alert('下拉刷新')  
}}

refreshing 如果定成 true 的话就会一直刷新。而这个刷新动作往往都是由我们的数据所决定的。所以在这里,我们可以先写一个构造函数。

js 复制代码
constructor(){  
    super()  
    this.state={isFresh:false}  
    }  

    loadData=()=>{this.setState({isFresh:true})}  
    setTimeout(()=>{this.setState({isFresh:false}) alert('下拉刷新')}, 2000)

下拉刷新

js 复制代码
// 下拉刷新  
refreshing={this.state.isFresh}  
    onRefresh={()=>{this.loadDate}

上拉刷新

js 复制代码
// 上拉刷新  
onEndReachedThreshold={0.1}  
onEndReached={()=>{alert('到底了')}}

这里面的 0.1 代表的是,当数据还剩 10% 后,触发上拉刷新。

声明头部 和 尾部 组件

js 复制代码
ListHeaderComponent={()={  
//声明列表的头部组件  
return <Text style={{fontSize:40}}>哈哈哈</Text>  
}}  
  
ListFooterComponent={()={  
//声明列表的尾部组件  
return <Text style={{fontSize:40}}>哈哈哈</Text>  
}}
相关推荐
Csvn18 小时前
bundle优化
前端
北冥有鱼18 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚18 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601818 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能18 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师18 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端
alsmile19 小时前
AI友好的可视化图形引擎自我革命:Meta2d.js 2.0 历时一年全新重写,性能与多人协作全面升级
前端·开源·数据可视化
行思理19 小时前
Nginx 跨站请求(CORS)配置完全指南:从原理到生产实践
java·前端·nginx
粥里有勺糖19 小时前
视野修炼-技术周刊第137期 | 编程已经面目全非
前端·github·ai编程
IT_陈寒19 小时前
Python的列表推导式用不好真的会爆内存你知道吗
前端·人工智能·后端