Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View tomkis's full-sized avatar

Tomáš Weiss tomkis

View GitHub Profile
@tomkis
tomkis / routable_hoc.jsx
Created October 11, 2015 18:42
Routable high order component.
export default routable('/absolute/route/foo', props => <span>Foo</span>);
@tomkis
tomkis / gist:6783b848401b6a9b351a
Created April 30, 2015 18:11
Flux - business logic in stores

This is a reaction to https://twitter.com/tomkisw/status/593822104589578240

I would personally prefer to keep business logic in one place. And this place ideally should be the store. I have always been fan of having stores completely synchronous and to move any communication with the API to action creators. It works pretty nice as long as you don't need to parametrize your API calls, once you get to this point, then some funky stuff in your code may actually happen. The state of your application should be encapsulated inside your stores and the only component that can directly access it, is a controller-view.

It's absolutely valid to keep your API calls in action creators as long as you don't do any business logic in there (no branching, no store dependency, no state manipulation).

You have also mentioned you might even need state from multiple stores. Technically, there is nothing wrong about duplicating state across multiple stores (e.g. listening to the same action from multiple stores), it's something

// incorrect, does not work for the exact midnight
var today = moment(),
yesterday = moment().subtract(1, 'days');
// correct but ugly
var today = moment(),
yesterday = today.clone().subtract(1, 'days');
// pretty but unable to write with momentjs because instance is not immutable
var today = moment(),