ReactNative 基础 - 11 (FlatList组件,核心属性data、renderItem、keyExtractor,分割组件,头部组件,尾部组件)

news/2024/7/15 19:20:01 标签: react native, react.js, javascript

FlatList组件支持下拉刷新、触底加载、回到顶部、头部、尾部组件、行分割组件等待

1、核心属性:

        data:需要显示的数组数据

        renderItem:数组每个元素对应的界面ui标签的样式(标签)

        keyExtractor:每个ui的唯一标识

javascript">export default class App extends Component {
  skills = ['vue','react','angluar','jquery','uni-app'];
  //拼接ui标签,{index, item}解构传入的数据
  _renderItem = ({index, item}) => (
    <Text>{index} - {item}</Text>
  );
  //不解构,是这样的写法:
  _renderItem1 = data => {
    const {index, item} = data;
    return (
      <Text>{index} - {item}</Text>
    );
  };
  render() {
    return (
      <FlatList
        data={this.skills}
        renderItem={this._renderItem}
        keyExtractor={(item, index) => index}>
</FlatList>
    );
  }
}

2、可选属性:

        ItemSeparatorComponent:分割组件(每个list的分割,通常可以用来写分割线)

        ListHeaderComponent:头部组件

        ListFooterComponent:尾部组件

javascript">import React, {Component} from 'react';
import {FlatList, Text, View} from 'react-native';

export default class App extends Component {
  heros = [
    {name: '安安', job: '老师', price: 999},
    {name: '啵啵', job: '学生', price: 1001},
    {name: '瞅瞅', job: '搬砖', price: 899},
    {name: '嘟嘟', job: '养猪', price: 666},
    {name: '娥娥', job: '和水泥', price: 555},
  ];
  _renderItem = ({item, index}) => (
    <Text
      style={{
        fontSize: 26,
        padding: 5,
      }}>
      {index + 1}、{item.name} - {item.job} - ¥{item.price}
    </Text>
  );
  //分割线
  _ItemSeparatorComponent = () => (
    <View
      style={{
        height: 10,
        borderBottomWidth: 1,
        borderBottomColor: 'gray',
      }}></View>
  );
  //头部
  _ListHeaderComponent = () => (
    <Text style={{fontSize: 30, color: 'red', textAlign: 'center'}}>
      本局英雄阵容:
    </Text>
  );
  //尾部
  _ListFooterComponent = () => (
    <Text style={{fontSize: 26, color: 'blue'}}>本场5个英雄</Text>
  );
  render() {
    return (
      <FlatList
        data={this.heros}
        renderItem={this._renderItem}
        keyExtractor={(item, index) => index}
        ItemSeparatorComponent={this._ItemSeparatorComponent}
        ListHeaderComponent={this._ListHeaderComponent}
        ListFooterComponent={this._ListFooterComponent}></FlatList>
    );
  }
}


http://www.niftyadmin.cn/n/508617.html

相关文章

ReactNative 基础 - 12 (网络请求 + FlatList,实现触底加载、下拉刷新、回到顶部,多列布局)

onEndReached&#xff1a;触底加载 onEndReachedThreshold{0.1} &#xff1a;触底加载的位置&#xff0c; 默认是未显示区域 可见高度为50%&#xff08;0.5&#xff09; onRefresh&#xff1a;下拉刷新&#xff08;触发事件时&#xff0c;需要将refreshing设为true&#xff0…

页面上有多个按钮,点击按钮,输出当前是第几个按钮

通过for循环&#xff0c;内部采购匿名函数自调用的方式&#xff0c;将每一次循环的i保存出来&#xff0c;那么&#xff0c;在点击按钮时&#xff0c;就能得到当前的按钮序号 &#xff08;不采用闭包方式的话&#xff0c;点击按钮时&#xff0c;当前案例中i已经是5了&#xff0…

ReactNative 基础 - 13 (FlatList横向滚动,实现轮播)

horizontal&#xff1a;横向排列 pagingEnabled&#xff1a;按页滚动 export default class App extends Component {banners [http://www...1.png,http://www...2.png,http://www...3.png,http://www...4.png,];current 0;componentDidMount() {//利用定时器&#xff0c;实…

ReactNative 基础 - 14 (路由、跳转、传参)

react提供了router路由react-router-dom&#xff0c;ReactNative为了能够在移动端有更多的路由使用体验&#xff0c;专门开发了路由系统. 官方网址&#xff1a;https://reactnavigation.org/ 使用RN的路由&#xff0c;需要在项目包安装并且编译成apk才能使用 1、安装&#x…

JS对象 - 拷贝对象的常用方法(浅拷贝与深拷贝)

1、JSON.parse(JSON.stringify(obj)) 先将目标对象转为字符串&#xff0c;再转为对象&#xff0c;可实现对象的深拷贝 var obj1 {name:明明,scores:[88,76,91]} var obj2 JSON.parse(JSON.stringify(obj1)) console.log(obj1 obj2) //false 适用于绝大部分的对象&#xff…

CSS中水平垂直居中的几种常用方法

效果&#xff1a; <div class"outer"><div class"inner">oooo.oooo</div></div> 1、flex弹性布局 外层容器设置flex弹性布局&#xff0c;设置主轴和交叉轴center <style>.outer{width: 200px;height: 200px;background-colo…

自定义Vue指令,设置每个页面的title

定义指令 v-title&#xff1a; directive{title:{inserted: (el) {document.title el.dataset.title}} }调用&#xff1a; <div v-title data-title"首页"></div>

Vue组件封装 ——button组件

一、基础准备工作 1、创建一个基础的vue项目包 2、创建components文件夹&#xff0c;用于存放组件&#xff0c;新建button.vue组件&#xff0c;可以自己取个名字 <script> export default {name: "CatButton", }; </script> 3、在main.js中引入组件 …