## Redux 1. Use Immutable.js for non primitives, such as lists, objects, maps, etc. 1. Store keys of Immutable.js values should be named with prefix `$$` Store should be of the shape: ```js export type StoreType = { $$commentsStore: $$Map, $$profileStore: $$Map, }; ``` ## Action Creators This is boilerplate code that creates Redux "actions". These a functions to initiate a mesasge to Redux, which can update the store via reducers, kick off a redux saga, trigger other middleware, etc. Each action creator has the following parts: 1. actionType: Unique string which identifies the action. All the redux listeners will use this actionType. 2. List of param values. ## Selectors Functions of the form (flow syntax) ```js (store: {}) => {} ``` Notes: 1. Store contains Immutable.js 2. Selectors convert Immutable, like this: `(store) => store.$$somePartOfStore.toJS()` 3. Note that we know that toJS is on the `$$somePartOfStore`, as it's named with the `$$`