React学习——ListView(Reflux)

接前一篇,把前面的ListView改成Reflux的形式

   var BookActions=Reflux.createActions([
            ‘fetchList‘
        ]);
    var BookStore = Reflux.createStore({
        listenables: [BookActions],
        bookList:[‘item1‘,‘item2‘,‘item3‘],
        init:function () {
            this.fetchList();
            console.log(‘init done.‘);
        },
        fetchList:function(){
            this.bookList.push(‘item‘+(this.bookList.length+1));
            console.log(‘fetchList‘+this.bookList.length);
            this.trigger(this.bookList);
        }
    });

    var TextItem = React.createClass({
        render:function(){
            var item = this.props.item;
            return <p>this is {item}</p>
        }
    });

    var Template = React.createClass({
        render:function(){
            return React.createElement(this.props.type,this.props);
        }
    });

    var ListViewItem = React.createClass({
        render:function(){
            var item = this.props.item;
            var cls = this.props.isSelected?‘selected‘:‘‘;
            if(this.props.template){
                return <li className={cls} onClick={this.props.onClick}><Template type={this.props.template} item={item}></Template></li>;
            }else{
                return <li className={cls} onClick={this.props.onClick}>{item}</li>;
            }
        }
    }); 

    var ListView = React.createClass({
        mixins: [Reflux.connect(BookStore, ‘bookstore‘)],
        onSelect:function(item){
            this.setState({selectedItem:item});
            console.log(‘selected item:‘ + item);
        },
        render: function() {
            var itemTemplate = this.props.itemTemplate?this.props.itemTemplate:‘‘;
            var selectedItem = this.state.selectedItem;
            console.log(‘state:‘ + this.state);

            for(var key in this.state){
                console.log(‘key=‘+key);
            }

            if(this.state.bookstore){
                var items = this.state.bookstore?this.state.bookstore:[];
                console.log(‘render items:‘ +this.state.bookstore + ‘-‘ + items.length);
                return (
                    <ol>
                    {
                        items.map(function (item,i) {
                            var isSelected = (item ==selectedItem);
                            return <ListViewItem key={i} item={item} template={itemTemplate} isSelected={isSelected} onClick={this.onSelect.bind(this,item)}></ListViewItem>
                        },this)
                    }
                    </ol>
                );
            }else{
                return <ol></ol>;
            }
        }
    }); 

    React.render(
        <div>
        <button onClick={BookActions.fetchList}>加一个</button>
        <ListView itemTemplate={TextItem}>
            </ListView>
            </div> ,
    document.body
    ); 

    BookActions.fetchList();
时间: 2024-10-27 13:43:32

React学习——ListView(Reflux)的相关文章

React学习——ListView组件

(草稿) 先把代码放上来,再补充说明 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>React ListView</title> 5 <!-- 6 做一个列表控件,列表元素的模板可以设置,模仿ItemTemplate 7 --> 8 <script src="../build/react-with-addons.js" type="text/javascr

Android UI学习 - ListView (android.R.layout.simple_list_item_1是个什么东西)

Android UI学习 - ListView 2010-06-20 18:21:35 标签:Android UI 移动开发 ListView ListActivity 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://android.blog.51cto.com/268543/336162 ListActivity ListActivity是一个专门显示ListView的Activity类,它内置了ListView对象,只要我

Android学习---ListView的点击事件,simpleAdapter和arrayadapter的原理和使用 - Hi_Amos

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p

React学习系列

React学习系列 系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是初学者,英语也不是很好,不过一直强迫自己看英文文档. 这是理解翻译,翻译的不好,请见谅!()中的是我翻译过程中理解,参考下,有什么说的不对的欢迎指点下! 第一节:如何开始react和了解react的概念 1.React是什么 react是Facebook 开发出来用于促进UI交互,创建带有状态的,可复

Android学习---ListView和Inflater的使用,将一个布局文件转化为一个对象

本文将介绍ListView和Inflater的使用,将接上一篇文章内容. 一.什么是ListView? 在android开发中ListView是比较常用的控件,ListView 控件可使用四种不同视图显示项目,1.大(标准)图标2.小图标3.列表4.报表,比较常用的是列表的形式.ListItem 对象可包含文本和图片.然而,若要使用图片则必须通过 Icons 和 SmallIcons 属性引用 ImageList控件. 本文将接着上一篇文章,将sqlite数据库的数据以列表的形式显示出来. 二.

Android学习---ListView的点击事件,simpleAdapter和arrayadapter,SimpleCursoAdapter的原理和使用

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p

React 学习路线

以下所谈及的,就是为你定制的 React 学习路线. 为了能稳固基础,我们一定要逐步地来进行学习. 倘若你正在建造一间房子,那么为了能快点完成,你是否会跳过建造过程中的部分步骤?如在具体建设前先铺设好部分石头?或直接在一块裸露的土地上先建立起墙面? 又假如你是在堆砌一个结婚蛋糕:能因为上半部分装饰起来更有趣,而直接忽略了下半部分? 不行吗? 当然不行.众所周知,这些做法只会导致失败. 因此,不要想着通过接触 React 来将 ES6 + Webpack + Babel + React + Rou

React学习笔记-1-什么是react,react环境搭建以及第一个react实例

什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似.react是Facebook官方推出的一个javascript的库,现在已经有了非常多的库和框架Facebook为什么还要开发一款新的框架呢?原因就是 Facebook遇到了一些新的问题.Facebook需要解决的问题是构建数据不断变化的大型应用.大型应用是什么意思?数据不断变化带来什么问题呢? 

react学习小结(生命周期- 实例化时期 - 存在期- 销毁时期)

react学习小结 本文是我学习react的阶段性小结,如果看官你是react资深玩家,那么还请就此打住移步他处,如果你想给一些建议和指导,那么还请轻拍~ 目前团队内对react的使用非常普遍,之前对react使用不多,正好我目前在做的项目也在使用react+redux,借着这个机会系统的学习下react+redux. react是什么 react是一个JavaScript类库,通过react,我们可以构建可组合的UI,也就是说,我们可以通过重用组件来组合出我们的UI.可以说react的核心便是