React學習——ListView(Reflux)

來源:互聯網
上載者:User

標籤:

接前一篇,把前面的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();

 

React學習——ListView(Reflux)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.