React Native基于mobx 实现 listview列表默认选中,选中,取消选中
2017-03-31 08:52
405 查看
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后会调用,
效果图
使用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后会调用,
相关文章推荐
- 用ListView和GridView实现的,第一个item默认选中的二级列表
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表
- Android 之 XHorizontalListView横向滑动列表,并默认第一个选中
- gridview、listview适配器布局中带有checkbox实现的列表 checkbox只能有一项选中
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表
- Android实现取消GridView中Item选中时默认的背景色
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表
- ListView如何实现单选,默认选中一条。
- React Native 基础篇 之 ListView 产品列表实现
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表 分类: H1_ANDROID 2013-11-20 10:04 875人阅读 评论(0) 收藏
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表
- Android中listview选中一个列表变为选中颜色,其他变为默认颜色
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表 分类: H1_ANDROID 2013-11-19 22:35 987人阅读 评论(0) 收藏
- Android ListView 默认选中某一项实现代码