Javascript ';这';在reflew.createStore()中未定义
我试图通过回流存储中的Javascript ';这';在reflew.createStore()中未定义,javascript,reactjs,reactjs-flux,refluxjs,relayjs,Javascript,Reactjs,Reactjs Flux,Refluxjs,Relayjs,我试图通过回流存储中的this设置状态属性,但每当我试图设置属性时,都会出现以下错误: 未捕获类型错误:无法读取未定义的属性“触发器” 我一直在使用Babel来编译我的JSX,所以不确定这是否是问题所在,但我对此深表怀疑 import Reflux from 'reflux'; import BoardActions from '../actions/BoardActions'; const BoardStore = Reflux.createStore({ listenables: [
this
设置状态属性,但每当我试图设置属性时,都会出现以下错误:
未捕获类型错误:无法读取未定义的属性“触发器”
我一直在使用Babel来编译我的JSX,所以不确定这是否是问题所在,但我对此深表怀疑
import Reflux from 'reflux';
import BoardActions from '../actions/BoardActions';
const BoardStore = Reflux.createStore({
listenables: [BoardActions],
getInitialState: () => {
return {
boards: []
};
},
init: (state = undefined) => {
if (state) {
this.state = state;
}
this.triggers(this.state); <----- Getting the error here
// this.state = { boards: [] }; <----- This would also fail
},
...
});
谢谢
更新 我可以看到transpiler正在编译代码中将
此
转换为未定义
,如下所示:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _reflux = require('reflux');
var _reflux2 = _interopRequireDefault(_reflux);
var _BoardActions = require('../actions/BoardActions');
var _BoardActions2 = _interopRequireDefault(_BoardActions);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var BoardStore = _reflux2.default.createStore({
listenables: [_BoardActions2.default],
init: function init() {
undefined.test = 'test';
},
onFetch: function onFetch() {},
onFetchFetching: function onFetchFetching() {},
onFetchCompleted: function onFetchCompleted(boards) {
undefined.boards = boards;
undefined.trigger(undefined.boards);
},
onFetchFailed: function onFetchFailed() {}
});
exports.default = BoardStore;
//# sourceMappingURL=BoardStore.js.map
但是仍然不知道为什么它会将
这个
传输到未定义的
,因为您使用箭头函数来定义对象的方法(对于传递给reflow.createStore的方法)
在arrow函数中,此
是词汇范围,这意味着在您的问题上下文中,它是未定义的
,因为它在词汇上绑定到包含模块(无论是什么)
请参见中的示例
有关案例的详细信息,请参阅
注意:我假设您熟悉基础知识,否则将链接到一本关于ES6的好书中的一篇好文章。,因为您使用箭头函数定义对象的方法(对于传递给reflow.createStore的方法)
在arrow函数中,此
是词汇范围,这意味着在您的问题上下文中,它是未定义的
,因为它在词汇上绑定到包含模块(无论是什么)
请参见中的示例
有关案例的详细信息,请参阅
注意:我假设您熟悉基础知识,否则将链接到一本关于ES6的好书中的一篇好文章。问题似乎是由于使用了箭头函数造成的
这应该起作用:
const BoardStore=reflow.createStore({
...
初始化(状态=未定义){
如果(州){
this.state=状态;
}
this.triggers(this.state);
//this.state={boards:[]};
},
...
});代码>该问题似乎是由使用箭头函数引起的
这应该起作用:
const BoardStore=reflow.createStore({
...
初始化(状态=未定义){
如果(州){
this.state=状态;
}
this.triggers(this.state);
//this.state={boards:[]};
},
...
});嘿,伙计,你问了一个关于拆分盒子的问题。我是为你做的,但你把它拿走了。。。看看这个,如果它有助于冷却,如果不让我知道。哇,谢谢@wuno,我非常愿意重新回答这个问题,接受你的答案。我觉得有点傻,因为我没有给这个问题添加足够的细节,所以它很快就得到了这么多的反对票:P,你的答案很好,但我测试了溢出的内容和滚动区域,人们表现得好像从来没有问过问题一样。。。永远不要觉得自己愚蠢,但不幸的是,人们都很残忍。哈哈,那将是一个很酷的人。然后我会删除这些评论。当你打开它时发表评论,我会发布链接谢谢broCool,我已经取消删除了它!我有一个更新的问题,这可能是有价值的人在未来(和我自己)嘿,老兄,你问了一个关于分裂盒子的问题。我是为你做的,但你把它拿走了。。。看看这个,如果它有助于冷却,如果不让我知道。哇,谢谢@wuno,我非常愿意重新回答这个问题,接受你的答案。我觉得有点傻,因为我没有给这个问题添加足够的细节,所以它很快就得到了这么多的反对票:P,你的答案很好,但我测试了溢出的内容和滚动区域,人们表现得好像从来没有问过问题一样。。。永远不要觉得自己愚蠢,但不幸的是,人们都很残忍。哈哈,那将是一个很酷的人。然后我会删除这些评论。当你打开它时发表评论,我会发布链接谢谢broCool,我已经取消删除了它!我对这个问题有一个更新,这可能对将来的某个人(和我自己)有价值
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _reflux = require('reflux');
var _reflux2 = _interopRequireDefault(_reflux);
var _BoardActions = require('../actions/BoardActions');
var _BoardActions2 = _interopRequireDefault(_BoardActions);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var BoardStore = _reflux2.default.createStore({
listenables: [_BoardActions2.default],
init: function init() {
undefined.test = 'test';
},
onFetch: function onFetch() {},
onFetchFetching: function onFetchFetching() {},
onFetchCompleted: function onFetchCompleted(boards) {
undefined.boards = boards;
undefined.trigger(undefined.boards);
},
onFetchFailed: function onFetchFailed() {}
});
exports.default = BoardStore;
//# sourceMappingURL=BoardStore.js.map