Reflux是根据React的flux创建的单向数据流类库。 Reflux的单向数据流模式主要由actions和stores组成。例如,当组件list新增item时,会调用actions的某个方法(如addItem(data)),并将新的数据当参数传递进去,通过事件机制,数据会传递到stroes中,stores可以向服务器发起请求,并更新数据数据库。数据更新成功后,还是通过事件机制传递的组件list当中,并更新ui。整个过程的对接是通过事件驱动的。
var TodoActions = Reflux.createActions([
'addItem'
]);
var TodoStore = Reflux.createStore({
items: [1, 2],
listenables: [TodoActions],
onAddItem: function (model) {
$.post('/server/add', {data: model}, function (data) {
this.items.unshift(data);
this.trigger(this.items);
});
}
});
var TodoComponent = React.createClass({
mixins: [Reflux.listenTo(TodoStore, 'onStatusChange')],
getInitialState: function () {
return {list: []};
},
onStatusChange: function () {
this.setState({list: TodoStore.items});
},
render: function () {
return (
<div>
{this.state.list.map(function (item) {
return <p>{item}</p>
})}
</div>
)
}
});
React.render(<TodoComponent />, document.getElementById('container'));
同React Flux比较
reflux主要三个部分
Reflux,createActions([])
Reflux,createStore({})
React.createClass({})
创建Action
var statusUpdate = Reflux.createAction(options);
var TodoStore = Reflux.createStore({
init: function () {
this.listenTo(addItem, 'addItem');
},
addItem: function (model) {
console.log(model);
}
});
addItem({name: 'xxx'});