ReactNative系列之十六listview中子元素变更checkbox

本文介绍了在ReactNative中使用ListView时遇到的刷新问题及其解决方案。针对特定子项更新时整个ListView无法响应的情况,提供了一种通过克隆并替换数据源的方法来强制刷新,并讨论了性能考量。

实现效果,先上图。主要解决了几个问题



1、在ReactNative中变使用listview,但变更listview中的某一item子元素时,设置listview的dataSource将无法刷新子item元素,解决变法为:

                for (var i=0; i<this.state.dataSourceArray.length; i++) {
                    let key = i;
                    this.state.dataSourceArray[key].isSelected = true;
                }
                var newTabs = JSON.parse(JSON.stringify(this.state.dataSourceArray));
                this.state.dataSource = this.state.dataSource.cloneWithRows(newTabs ? newTabs : []);

2、这个界面大体上有四层,最上面一层的navbar先不看,第二层是顶部“编辑”条和下方“全选”,第三层为ListView第四层为ListViewItem.将上层属性传给子元素变更使用,在子页面调用此方法,能够获取到将要改变的元素的属性,使用this.props获取到的是老属性值
    shouldComponentUpdate(nextProps) {
        console.log("shouldComponentUpdate----------" + nextProps.selectAllItem);
3、把握好这两个关键点,做这种深层次的交互组件,问题应该不大。不过由于会刷新整个item,效率上会存在一定的问题,所以Listview的元素不适合太大的情况


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值