redux-falcor helps connect your Redux applications to your Falcor API.
To install:
npm install --save redux-falcor
First include redux-falcor in the initial setup of your application.
import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
import { createFalcorMiddleware, falcorReducer } from 'redux-falcor';
import { Model } from 'falcor';
const reducer = combineReducers({
entities: falcorReducer
// Other reducers here
});
// The falcor model that redux-falcor will query
const falcor = new Model({
cache: {
// Optional data here
}
});
const finalCreateStore = compose(
applyMiddleware(createFalcorMiddleware(falcor)),
createStore
);
const store = finalCreateStore(reducer);
We can now access the data returned from Falcor through state.entities.*
. To
query that data we just need to dispatch a special action.
import { retrievePath } from 'redux-falcor';
store.subscribe(() =>
console.log(store.getState())
);
store.dispatch(retrievePath('usersById[35]["email"]');
// This will logged:
// {
// entities: {
// usersById: {
// 35: {
// email: "[email protected]"
// }
// }
// }
// }
While its not suggested, you can also hook into the Falcor promise directly if you need to. For example:
import { retrieveValue } from 'redux-falcor';
store.dispatch(retrieveValue('usersById[35]["email"]').then((email) => {
console.log(email); // [email protected]
});
MIT