实现效果,先上图。主要解决了几个问题
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的元素不适合太大的情况