我在使用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
我試過到初始狀態的,但getInitialState沒有被稱爲要麼。 mixin中似乎沒有任何東西被調用。 – stimms 2015-02-09 14:25:17
@stimms找到另一個罪魁禍首。檢查我編輯的答案。 – jlowgren 2015-02-09 15:16:02
也嘗試過。我實際上看了看代碼,它允許在那裏有一個數組或一個混合。我在這裏添加了一個實時版本http://jsbin.com/lekegicumo/2/edit?html,js,console,output,以便其他人可以看到我在做什麼 – stimms 2015-02-09 16:20:38