浩康建站品牌

13518219792
  • 首页
  • 关于我们
    • 如何选择
    • 选择理由
  • 案例作品
    • 网站建设
    • 优化推广
    • 微信开发
    • 电商托管
  • 服务项目
    • 网站建设
    • 移动端/APP
    • 微信/小程序
    • 技术支持
    • 其它服务
  • 建站知识
    • 广西网站建设
    • 广西做网站
    • 广西网站设计
  • 网站售后
    • 广西网站运营
    • 广西网站维护
    • 广西网站推广
  • 客服中心
  • 全国分站

创新互联React教程:列表视图

列表视图——为变化的数据列表的垂直滚动的高效显示而设计的一个核心组件。最小的 API 是创建一个ListView.DataSource,用一个简单的数组数据的 blob 填充,并用那个数据源实例化一个 ListView 组件和一个renderRow 回调,它会从数组数据中带走一个 blob 并返回一个可渲染的组件。

十年专业网络公司历程,坚持以创新为先导的网站服务,服务超过上千多家企业及个人,涉及网站设计、APP应用开发、微信开发、平面设计、互联网整合营销等多个领域。在不同行业和领域给人们的工作和生活带来美好变化。

最小的例子:

getInitialState: function() {
  var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});  return {    dataSource: ds.cloneWithRows(['row 1', 'row 2']),
  };
},render: function() {
  return (
     {rowData}}
    />
  );
},

列表视图还支持更高级的功能,包括带有 sticky 页眉的部分,页眉和页脚的支持,回调到可用数据的最后(onEndReached)和设备窗口变化中可见的行集(onChangeVisibleRows),以及一些性能优化。

当动态加载一些可能非常大(或概念上无限大的)数据集时,为了让列表视图滚送的顺畅,有一些性能操作设计:

  • 只有重新呈现改变行——提供给数据源的 hasRowChanged 函数告诉列表视图是否需要重新呈现一行,因为源数据发生了变化——更多细节请看 ListViewDataSource。

  • 行限速呈现——默认情况下,每次事件循环时,只显示一行 (可用pageSize道具定制)。这将工作分解为小块,在呈现行时,减少框架下降的机会。

Props

Edit on GitHub

ScrollView props...

dataSource 列表视图数据源

initialListSize 数字型

多少行呈现在初始组件装置中。使用这个来实现,这样第一个屏幕需要的数据就会一次出现,而不是在多个框架的过程中出现。

onChangeVisibleRows 函数型

(visibleRows, changedRows) => void

当可见的行集改变时调用。visibleRows 为所有可见的行映射 { sectionID: { rowID: true }} ,changedRows 为已经改变了它们可见性的行映射 { sectionID: { rowID: true | false }},true 表明行可见,而 false 表明行已经从视图中被删除了。

onEndReached 函数型

当所有行已经呈现并且列表被滚动到了 onEndReachedThreshold 的底部时被调用。提供了 native 滚动事件。

onEndReachedThreshold 数字型

onEndReached 像素的阈值。

pageSize 数字型

每次事件循环显示的行的数量。

removeClippedSubviews 布尔型

为提高大型列表滚动性能的实验性能优化,与溢出一起使用:“隐藏”在行容器中。使用时自己承担风险。

renderFooter 函数型

() => renderable

页眉和页脚在每个呈现过程中都会出现(如果提供了这些道具)。如果重新呈现它们耗费很大,那就把它们包在 StaticContainer 或其他适当的机制中。在每一个呈现过程中,页脚始终是在列表的底部,页眉始终在列表的顶部。

renderHeader 函数型

renderRow 函数型

(rowData, sectionID, rowID) => renderable 需要从数据源和它的 id 取走一个数据条目,并返回一个可渲染的作为行呈现的组件。默认的情况下,数据正是被放入了数据源的东西,但也可以提供自定义的提取器。

renderSectionHeader 函数型

(sectionData, sectionID) => renderable

如果提供了该函数,那么本节的 sticky 页眉就会呈现。Sticky 行为意味着它将带着本节顶部的内容滚动,直到它到达屏幕的顶端,此时它会停在屏幕顶部,直到被下一节的页眉推掉。

scrollRenderAheadDistance 数字型

在它们以像素的形式出现在屏幕上之前,要多早就开始呈现行。

例子

Edit on GitHub

'use strict';var React = require('react-native');var {
  Image,
  ListView,
  TouchableHighlight,
  StyleSheet,
  Text,
  View,
} = React;var UIExplorerPage = require('./UIExplorerPage');var ListViewSimpleExample = React.createClass({
  statics: {
    title: ' - Simple',
    description: 'Performant, scrollable list of data.'
  },
  getInitialState: function() {    var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});    return {
      dataSource: ds.cloneWithRows(this._genRows({})),
    };
  },
  _pressData: ({}: {[key: number]: boolean}),
  componentWillMount: function() {    this._pressData = {};
  },
  render: function() {    return (       - Simple'}
        noSpacer={true}
        noScroll={true}>        
      
    );
  },
  _renderRow: function(rowData: string, sectionID: number, rowID: number) {    var rowHash = Math.abs(hashCode(rowData));    var imgSource = {
      uri: THUMB_URLS[rowHash % THUMB_URLS.length],
    };    return (       this._pressRow(rowID)}>        
          
            
            
              {rowData + ' - ' + LOREM_IPSUM.substr(0, rowHash % 301 + 10)}            
          
          
        
      
    );
  },
  _genRows: function(pressData: {[key: number]: boolean}): Array {    var dataBlob = [];    for (var ii = 0; ii < 100; ii++) {      var pressedText = pressData[ii] ? ' (pressed)' : '';
      dataBlob.push('Row ' + ii + pressedText);
    }    return dataBlob;
  },
  _pressRow: function(rowID: number) {    this._pressData[rowID] = !this._pressData[rowID];    this.setState({dataSource: this.state.dataSource.cloneWithRows(      this._genRows(this._pressData)
    )});
  },
});var THUMB_URLS = ['https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.1997/p128x128/851549_767334479959628_274486868_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851561_767334496626293_1958532586_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.1997/p128x128/851579_767334503292959_179092627_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851589_767334513292958_1747022277_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851563_767334559959620_1193692107_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851593_767334566626286_1953955109_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851591_767334523292957_797560749_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851567_767334529959623_843148472_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851548_767334489959627_794462220_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851575_767334539959622_441598241_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-ash3/t39.1997/p128x128/851573_767334549959621_534583464_n.png', 'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851583_767334573292952_1519550680_n.png'];var LOREM_IPSUM = 'Lorem ipsum dolor sit amet, ius ad pertinax oportere accommodare, an vix civibus corrumpit referrentur. Te nam case ludus inciderint, te mea facilisi adipiscing. Sea id integre luptatum. In tota sale consequuntur nec. Erat ocurreret mei ei. Eu paulo sapientem vulputate est, vel an accusam intellegam interesset. Nam eu stet pericula reprimique, ea vim illud modus, putant invidunt reprehendunt ne qui.';/* eslint no-bitwise: 0 */var hashCode = function(str) {  var hash = 15;  for (var ii = str.length - 1; ii >= 0; ii--) {
    hash = ((hash << 5) - hash) + str.charCodeAt(ii);
  }  return hash;
};var styles = StyleSheet.create({
  row: {
    flexDirection: 'row',
    justifyContent: 'center',
    padding: 10,
    backgroundColor: '#F6F6F6',
  },
  separator: {
    height: 1,
    backgroundColor: '#CCCCCC',
  },
  thumb: {
    width: 64,
    height: 64,
  },
  text: {
    flex: 1,
  },
});module.exports = ListViewSimpleExample;

网页题目:创新互联React教程:列表视图
当前链接:http://www.gxwzsj.com/article/cohejop.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

其他资讯

  • Gartner:未来三年企业对私有云投资多于公共云
  • 提升Linux服务器安全:策略与实践(加固linux服务器)
  • 上位机现在的主要框架
  • 如何租用香港服务器?(租用香港服务器进行网站建设需要考虑哪几个方面方面)
  • 香港服务器如何备案(为什么美国服务器不用备案)?(服务器香港就不用备案了吧)

行业动态

企业网站建设的重要性!

现在虽然是移动互联网时代,但企业网站依然重要,包含PC站点,移动站。可以说企业网站关系企业的未来发展和前途,尤其对中小企业更是如此,一些中小企业老板,对自己的名片很在乎,因为这是个门面。...

服务项目

  • 网站建设

    查看详情
  • 移动端/APP

    查看详情
  • 微信/小程序

    查看详情
  • 技术支持

    查看详情
  • 其它服务

    查看详情
  • 更多服务项目

    用我们的专业和诚信赢得您的信赖,从PC到移动互联网均有您想要的服务!

    获取更多

联系吧 在百度地图上找到我们

电话:13518219792

如遇占线或暂未接听请拨:136xxx98888

业务咨询 技术咨询 售后服务
网站设计
网站设计制作
网站设计制作报价
做网站设计
定制网站设计
网站制作
wap网站制作
成都网站制作
达州网站制作
绵阳网站制作
联系我们
电话:13518219792
邮箱:631063699@qq.com
地址:成都青羊区锦天国际1002号
网址:www.gxwzsj.com
网站建设
成都模版网站建设
手机网站建设
成都网站建设
成都网站建设

微信二维码

  • 友情链接
  • 锦江区个人独资企业工商注册
  • 成都全屋定制
  • 云服务器
  • 邛崃发电机保养
  • 绵阳idc
  • 资阳网站设计
  • 巴中发电机租赁
  • 大悟县网站建设
  • 湖北专业汽车配件
  • 成都珉田数据中心

Copyright © 2013-2025 www.gxwzsj.com 浩康建站品牌广西站 QQ:244261566 版权所有 备案号:蜀ICP备17025366号

  • 在线咨询
  • 13518219792
  • 微信二维码

  • 移动版官网