【发布时间】:2016-05-30 21:12:02
【问题描述】:
我对 React 和 Reflux 以及现代 JavaScript 开发有点陌生。努力学习。所以,我正在制作一个基本上是一种聊天窗口的组件。带有行和输入框的列表。当您在输入框中键入内容并按 Enter 时,它会将行添加到列表中。我使用 setState() 使它与纯 React 一起工作,现在我想让它使用 Reflux 存储。我的组件代码是这样的
import React from 'react';
import Reflux from 'reflux';
import ConsoleActions from '../actions';
import ConsoleStore from '../stores';
export default React.createClass({
mixins: [Reflux.connect(ConsoleStore, "lines")],
render() {
var lines = this.state.lines.map(function(line) {
return(<li>{line}</li>)
});
return (
<ul>{lines}</ul>
<input onKeyUp={this.enter}/>
)
},
enter(e) {
if (e.keyCode == 13) {
ConsoleActions.addConsoleLines([e.target.value]);
e.target.value = null
}
}
});
我的行为是
import Reflux from 'reflux';
export default Reflux.createActions(["addConsoleLines","clearConsoleLog",]);
我的商店是 从“回流”导入回流;
import Actions from './actions';
export default Reflux.createStore({
lines: [],
listenables: Actions,
getInitialState: function() {
return [];
},
addConsoleLines(lines) {
lines.forEach(line => {
this.lines.append(line);
});
},
clearConsoleLog() {
this.lines = []
}
});
不确定我缺少什么,Reflux.connect() 应该将我的商店连接到 state,但我收到“TypeError: this.state.lines is undefined”错误。
【问题讨论】:
-
self是从哪里出现的? -
糟糕... python 太多了。但是在商店中将 self 替换为 this 后,我得到了同样的错误。
-
添加init()到store中设置行为[],结果还是一样
标签: javascript reactjs refluxjs