Fluxible
Pluggable, singleton-free container for isomorphic Flux applications.
$ npm install --save fluxible
Docs
Features
- Singleton-free for server rendering
- Store dehydration for client bootstrapping
- Stateless async actions
- Higher order components for easy integration
- Enforcement of Flux flow - restricted access to the Flux interface from within components
- Pluggable - add your own interfaces to the Flux context
- Updated for React 0.13
Usage
import Fluxible from 'fluxible';
import React from 'react';
import {connectToStores, createStore, provideContext} from 'fluxible/addons';
const action = (actionContext, payload) => {
actionContext.dispatch('FOO_ACTION', payload);
};
const FooStore = createStore({
storeName: 'FooStore',
handlers: {
'FOO_ACTION': 'fooHandler'
},
initialize: function () {
this.foo = null;
},
fooHandler: function (payload) {
this.foo = payload;
},
getState: function () {
return {
foo: this.foo
}
}
});
class App extends React.Component {
render() {
return <span>{this.props.foo}</span>
}
}
App = provideContext(connectToStores(App, [FooStore], {
FooStore(store) {
return store.getState();
}
}));
const app = new Fluxible({
component: App,
stores: [FooStore]
});
const context = app.createContext();
context.executeAction(action, 'bar', function () {
console.log(React.renderToString(context.createElement()));
});
License
This software is free to use under the Yahoo Inc. BSD license.
See the LICENSE file for license text and copyright information.