- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试通过 Reflux 存储中的 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
},
...
});
这是 BoardActions:
import Reflux from 'reflux';
import BoardSource from '../sources/BoardSource';
const BoardActions = Reflux.createActions({
'fetch': { children: ['fetching', 'completed', 'failed'] }
});
BoardActions.fetch.listen(() => {
BoardSource.fetch().then((data) => {
BoardActions.fetch.completed(data);
});
});
export default BoardActions;
谢谢!
<小时/>我可以看到转译器正在将编译后的代码中的 this
转换为 undefined
,如下所示:
'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
但仍然不知道为什么会将 this
转译为 undefined
。
最佳答案
因为您使用箭头函数来定义对象的方法(对于传递给 Reflux.createStore
的方法)。
在箭头函数 this
中,它是词法范围的,这意味着,在您的问题的上下文中,它是 未定义
,因为它在词法上绑定(bind)到包含模块 (不管那是什么)。
参见 Babel online editor 中的示例.
查看更多 further explanation关于案例。
注意:我假设您熟悉基础知识,否则here是一本有关 ES6 的好书中一篇好文章的链接。
关于javascript - 'this' 在 Reflux.createStore() 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34509248/
大纲 在我的应用程序中,我使用 React和 Reflux并对我的数据进行分层设置。我正在尝试将应用程序的元素分解为单独的存储,以便能够正确 Hook 事件并分离关注点。 我有以下数据流: 工作区 -
我正在尝试在我的 ReactJs 应用程序中使用 Reflux。 我遇到一个问题,即监听数据存储的组件正在空组件实例而不是实例化的实际组件上执行回调。 调用操作toggleUserBar后,将调用数据
从我读到的模式来看,组件将数据传递给 Action , Action 传递给商店,商店的值更改会触发订阅商店的组件中的更新。我的问题是如何以通知的形式对这些触发的更新做出“ react ”? (即成功
我正在使用 Reflux.connectFilter mixin 让一堆 Graph 组件监听我的 GraphStore 中的变化。使用过滤器,它们应该仅在 GraphStore 的图形数组中与其 I
编辑: 我现在觉得很傻。 问题是我在代码中的任何地方都不需要我的商店,所以它从未真正被创建。 当我调用它正在监听的操作时,我的 refluxjs 商店没有调用它的回调。相关代码如下: Action :
我们正在构建一个相当复杂的 React + Reflux 应用程序,并且有几个 store 可以监听来自其他组件的一些 Action 。例如: var FooStore = Reflux.create
在我的代码中,我使用 async actions as promises图案很重。这是一个例子: var actions = Reflux.createActions({connectToFacebo
如何使用 ES6 解决存在回流的 mixin 问题? 像这样: mixins: [Reflux.listenTo(myStore, "onChange")]
不久前,我们开始了我们的第一个基于网络的单页应用程序。我们从 React 和 Flux(Facebook 实现)开始,但最近切换到 Reflux 来实现 Flux。虽然 Fb Flux 实现知道“命名
我正在熟悉 Flux 架构和 Reflux - 更简单的版本,没有调度程序 - 用于 ReactJS。 在完整的 Flux 中,听起来操作具有(或至少可以具有)明确且重要的目的:它们可用于更新外部服务
我尝试通过 Reflux 存储中的 this 设置状态属性,但每当我尝试设置属性时,都会收到以下错误: 未捕获类型错误:无法读取未定义的属性“触发器” 我使用 Babel 来编译我的 JSX,所以不确
我正在使用 qwest 查询我的端点,如下所示,onGetResourceCompleted 处理程序按预期触发,但数据未定义。为什么? var Actions = Reflux.createActi
我尝试将存储挂接到通过 React.createClass 定义的 React 组件中。我已经实现了全局状态,但需要进行大量重构。 我将分享相关代码并继续回答问题。 操作 var Reflux = r
我正在使用 React.js 和 Reflux 构建一个应用程序,但在获取组件来监听商店时遇到问题。 首先,我已成功将我的商店与一个事件关联起来,如下所示: 组件将操作发送到存储: var CalcR
我一直在尝试将一些现有的 React-Reflux 代码重构为 ES-6 语法, 我有 3 个商店,分别针对人员、项目和事件。它们基本上做同样的事情,但调用不同的 API 来获取结果。 所以我尝试执行
我想通过 api 调用获取我的用户列表,并呈现一个包含数据的表格。 目前我可以获取数据,但是当我尝试显示它时出现错误。 我认为 React 在 api 调用结束之前渲染不明白为什么。 这是我的代码:
我在 Reflux 商店中有以下 AJAX 调用: $.ajax({ url: 'submit.php', context: this, method: 'POST', dataTyp
我是 React Redux 新手。这是我正在开发的一个简单应用程序。但错误是我无法通过 Action 连接到商店。 这是我的错误 utils.js:78 Uncaught Error: action
我的 AuthActions 文件中有一个简单的 _clear 函数,它将 this.data 设置为 undefined。我仅在用户注销时调用此函数。当我使用其他用户重新登录时,以前帐户的
我仍在努力思考前端状态。是否有为资源设置商店的通用最佳实践?例如,我的 web api 有: GET /bikes GET /bikes/:id 我开始时只有一个 BikeStore 和 bikes:
我是一名优秀的程序员,十分优秀!