2015-02-09 2 views
0

У меня возникла проблема с созданием компонента с использованием реакции и 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>; 
    } 
}); 

Любая идея, что я делаю неправильно?

Edit: Я добавил JS бен вещь здесь

http://jsbin.com/lekegicumo/2/edit?html,js,console,output

ответ

0

Проблема заключалась в том, что порядок включения файлов JavaScript был неправильным. Поменяв некоторые проблемы, проблема была решена.

1

Выглядит как опечатка в Mixin.es6 мне.

Изменить getStategetInitialState.

Кроме того, в Component.es6:

Изменение mixins: StateMixin к mixins: [StateMixin].

+0

Я попробовал, но getInitialState не вызывается либо , Кажется, что в микшинге ничего не называется. – stimms

+0

@stimms Нашел другого виновника. Проверьте мой отредактированный ответ. – jlowgren

+0

тоже пробовал. Я действительно посмотрел на боевой код, и он позволяет либо массив, либо один микшинг. Я добавил живую версию здесь http://jsbin.com/lekegicumo/2/edit?html,js,console,output, чтобы другие могли видеть, что я делаю – stimms