listView 更改 renderRow UI 的问题



  • 我现在要写一个可以多选的listView 如图:

    0_1495071918304_qian.png

    点击右上角的垃圾桶图标 listView 的样式就变成这样:

    0_1495071989290_41AD6842-D591-4065-8CCA-1FB3DC1160B0.png

    有多选和全选的功能, 我想问一下, 由上面那样的页面变成下面那样的页面, 所有的 row 都要重新渲染吗? 我目前是全部渲染的, 这样在真机上操作明显卡顿, 有没有什么好的解决办法...



  • 代码不要动,试试release版还卡顿吗?



  • 请问如何重新渲染所有的row



  • @UI-Animation-Chen 我还没有在 release 上面试过...等下我试试



  • @cizhaoyang 初始化ListView.DataSource之后, 如果再给 listView 添加数据的时候写成这样

    const ds = new ListView.DataSource({
        rowHasChanged: (r1, r2) => r1 !== r2
    })
    
    this.setState({
        dataSource: ds.cloneWithRows(rows) 
    })
    

    而像下面这种写法会根据更改前和更改后数据是否不同去更新

    this.setState({
        dataSource: this.state.dataSource.cloneWithRows(rows)
    })
    


  • @UI-Animation-Chen 多谢大佬, 打包之后快多了...


登录后回复