React Native基于mobx 实现 listview列表默认选中,选中,取消选中

      ListView 在移动开发中是个很常用对的控件,不管是andorid 还是ios,在显示长列表视图时,都是个不错的选择(ps:andorid有更好的新控件),那么在react native中也是如此,本文是从项目中摘出来的,是配合mobx来实现的,当然也可以用redux实现,不过个人觉得redux过于繁杂,不如mobx来的舒服,看有人说就用React的SetState 也可以,但是render 太频繁,重绘太多,太消耗性能,并且逻辑也很乱。下面先上一个效果图,

效果图

       使用mobx,首先要知道他的几个核心概念,observer,observable,action,computed。这里不做过多介绍,大家可以自行百度去查找相关资料。下面说一下代码,


1.png

      从上面可以看出。定义了2个被观察者,items,代表数据源,selectedItem  代表当前被选中的item,这里只是模拟下数据,在构造方法中,实际项目肯定是从服务器拉下来的。
    

2.png

 上面是一个item的model类,定义一个action,也就是点击item后调用的方法,判断当前点击的item  是否已经被选中,来更改点击后的状态,

定义的computed的 判断每一个item的状态,是否被选中。


3.png

前面的都是定义了被观察者,现在这个是定义观察者,可以看出,onPress 回调调用了Item中的select方法,布局里面根据this.props.data.selected显示不同的图片(不选中是灰色的),mobx的好处是,实现了数据和界面的绑定,只要观察者感兴趣的被观察者发送了变化,他就会自动的发送变化,而且mobx为这种变化 提供了尽可能的优化,性能开销小,最后贴出显示界面的代码
     

4.png

为了演示的方便  用的scrollView 代替了listview  但是原理是一样的,componentWillReact  是mobx  提供的新的组件生命周期方法,在界面重新render后会调用,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,702评论 25 709
  • 前言 Redux 架构是 Flux 架构的一个变形,相对于 Flux,Redux 的复杂性相对较低,而且最为巧妙的...
    KenChoi阅读 13,389评论 4 30
  • Mobx是一个功能强大,上手非常容易的状态管理工具。就连redux的作者也曾经向大家推荐过它,在不少情况下你的确可...
    绯色流火阅读 122,284评论 51 170
  • 花雪随风不厌看,一片飞来一片寒。 清晨醒来,收到T发来下雪的视频,雪已经铺了厚厚的一层,不禁打了个哆嗦,喵从北...
    苏向晚阅读 2,806评论 0 0
  • “我再不能这样下去了。” 这可能是我第一千次说出这句话了。每次打完手枪后都会在心里默默祈祷。祈祷这是我人生中最后一...
    Atonement丶诺阅读 2,312评论 0 0