2015-02-09 43 views
0

我在使用react和martyjs創建組件時遇到了問題。我確定這是一個錯字或什麼,但我似乎無法找到它。儘管組件中有一個狀態mixin,但狀態並未被填充,它看起來並不像getState在mixin中被調用。組件中的狀態爲null

Mixin.es6

var StateMixin = Marty.createStateMixin({ 
    listenTo: VideoStore, 
    getState: function() { 
    return { 
     items: VideoStore.list(), 
     currentItem: VideoStore.select(), 
    } 
    } 
}); 

State.es6

var VideoStore = Marty.createStore({ 
    displayName: "Store", 
    handlers: { 
    list: Events.List, 
    render: Events.Render 
    }, 
    getInitialState: function(){ 
    return { }; 
    }, 
    list: function(){ 
    return this.fetch({ 
     id: 'list', 
     locally: function(){ 
     if(this.hasAlreadyFetched('list')) 
      return this.state.items; 
     }, 
     remotely: function(){ 
     return DissolveStateSource.list(); 
     } 
    }); 
    }, 
    select: function(){}, 
    render: function(){} 
}); 

Component.es6

$(()=> 
React.render(
    <VideosTable/>, 
    $("#container")[0] 
)); 

var VideosTable = React.createClass(
{ 
    mixins: StateMixin, 
    render: function() { 
    var body = this.state.list.when({ //state is null here 
     pending: function(){ 
     return <span className="ball"></span>; 
     }, 
     failed: function(error){ 
     return <div className="error">error.message</div>; 
     }, 
     done: function(videos){ 
     return <div>Videos</div>; 
     } 
    }); 

    return <h2>hello</h2>; 
    } 
}); 

任何想法,我做錯了嗎?

編輯:我這裏補充

一個js箱東西http://jsbin.com/lekegicumo/2/edit?html,js,console,output

回答

0

問題最終導致JavaScript文件包含的順序不正確。交換一些解決問題。

1

貌似Mixin.es6給我一個錯字。

更改getStategetInitialState

此外,在Component.es6

變化mixins: StateMixinmixins: [StateMixin]

+0

我試過到初始狀態的,但getInitialState沒有被稱爲要麼。 mixin中似乎沒有任何東西被調用。 – stimms 2015-02-09 14:25:17

+0

@stimms找到另一個罪魁禍首。檢查我編輯的答案。 – jlowgren 2015-02-09 15:16:02

+0

也嘗試過。我實際上看了看代碼,它允許在那裏有一個數組或一個混合。我在這裏添加了一個實時版本http://jsbin.com/lekegicumo/2/edit?html,js,console,output,以便其他人可以看到我在做什麼 – stimms 2015-02-09 16:20:38