
render = (Data) => UI;
render = (Data) => UI;update = (State, Action) => NewState;
Actions = [Update This, Add That, Delete Shit, ...];AppState = Actions.reduce(update, InitialState);AppState.subscribe(render);
Flux — архитектура, работа с диспатчером — дизайн
Flux = require('flux');Dispatcher = new Flux.Dispatcher();
Dispatcher.dispatch(action);Dispatcher.register((action) => ...);
{type: ActionTypes.DEPOSITED_INTO_ACCOUNTdata: {accountID: 13,amount: 500,timestamp: 1433482935845}}
Важна семантика
const TODO_CREATED = 'TODO_CREATED';
SHOW_LOAD_SPINNEROPEN_MODALCREATE_TODOLOAD_USERSUPDATE_SOME_BULLSHIT
TODO_CREATEDDEPOSITED_INTO_ACCOUNTWITHDRAWAL_FAILEDTOKEN_RECEIVEDUSER_INFO_UPDATED
ActionTypes = keyMirror({TODO_CREATED: null,LIST_REQUESTED: null});
Dispatcher.register(function(action) {switch (action.type) {case TODO_ADDED:// мутацииbreak;case TODO_REMOVED:// мутацииbreak;}});
function CounterStore(state = 0, action) {switch (action.type) {case DECREMENT:return state – 1;case INCREMENT:return state + 1;}}
Store = {[ActionTypes.TODO_ADDED](state, action) {},[ActionTypes.TODO_REMOVED](state, action) {}};
Flux Stateful — хорошие сторы

var Dispatcher = require('AppDispatcher');exports.addItemInCard = function(item){Dispatcher.dispatch({type: ITEM_ADDED_IN_CARD,data: item});};
exports.requestUserInfo = function(user){dispatch(USER_INFO_LOADING_STARTED, user);WebAPI.loadUserInfo(user).then((info) => dispatch(USER_INFO_LOADED, info),(error) => dispatch(USER_INFO_LOADING_FAILED, error));};



Ссылка на слайды — alexeyraspopov.github.io/talks/what-the-flux