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:[]};
},
...

});'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