【发布时间】:2015-08-25 14:57:31
【问题描述】:
我是 ReactJS 和“反应式编程”的新手。我尝试根据this项目创建dispatcher、action和store,但不知道如何将数据传递给组件。
在this 示例中它不起作用。
var data = [1, 2, 3, 4, 5];
var AppDispatcher = Kefir.emitter();
function DataActions() {
this.getAllData = function () {
AppDispatcher.emit({
actionType: "GET_ALL"
});
};
}
var Actions = new DataActions();
var getAllDataActionsStream = AppDispatcher.filter(function (action) {
return action.actionType === "GET_ALL";
}).map(function (action) {
return function (data) {
return data;
};
});
var dataStream = Kefir.merge([getAllDataActionsStream]).scan(function (prevData, modificationFunc) {
return modificationFunc(prevData);
}, {});
var Content = React.createClass({
getInitialState: function() {
this.onDataChange = this.onDataChange.bind(this);
return {componentData: []};
},
componentDidMount: function() {
dataStream.onValue(this.onDataChange);
},
componentWillMount: function(){
dataStream.offValue(this.onDataChange);
console.log(Actions.getAllData());
},
onDataChange(newData) {
this.setState({componentData: newData});
},
render: function() {
console.log(this.state);
var list = this.state.componentData.map(function (item, i) {
return (
<li key={i}>{item}</li>
);
});
return <ul>{list}</ul>;
}
});
React.render(<Content />, document.getElementById('container'));
【问题讨论】:
-
您能否通过调试器或控制台日志检查数据是否在从操作到 Kefir 或从 Kefir 到组件的过程中丢失?
-
@Moezalez 他们在开菲尔的行动中迷失了方向。 'AppDispatcher' 不发出动作。 jsfiddle.net/69z2wepo/15496
标签: javascript reactjs reactive-programming kefir.js