在组件中声明 null
State null in component
我在使用 React 和 martyjs 创建组件时遇到问题。我确定这是一个错字之类的,但我似乎无法找到它。虽然我在组件中有一个状态混合,但状态没有被填充,而且看起来甚至没有在混合中调用 getState。
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 bin 东西
在我看来 Mixin.es6
中的错字。
将 getState
更改为 getInitialState
。
此外,在 Component.es6
中:
将 mixins: StateMixin
更改为 mixins: [StateMixin]
。
问题最终是 JavaScript 文件的包含顺序不正确。交换一些解决了这个问题。
你在使用 React v0.1.13.0
这是使用 'construct'
初始化状态的新方法
constructor(props) {
super(props);
this.state = {count: props.initialCount};
}
https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html
我在使用 React 和 martyjs 创建组件时遇到问题。我确定这是一个错字之类的,但我似乎无法找到它。虽然我在组件中有一个状态混合,但状态没有被填充,而且看起来甚至没有在混合中调用 getState。
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 bin 东西
在我看来 Mixin.es6
中的错字。
将 getState
更改为 getInitialState
。
此外,在 Component.es6
中:
将 mixins: StateMixin
更改为 mixins: [StateMixin]
。
问题最终是 JavaScript 文件的包含顺序不正确。交换一些解决了这个问题。
你在使用 React v0.1.13.0
这是使用 'construct'
初始化状态的新方法constructor(props) {
super(props);
this.state = {count: props.initialCount};
}
https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html