Skip to content

Instantly share code, notes, and snippets.

@chrisui
Created November 11, 2015 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisui/5a0ec9c299f29f80f3a2 to your computer and use it in GitHub Desktop.
Save chrisui/5a0ec9c299f29f80f3a2 to your computer and use it in GitHub Desktop.
Redux selector examples
import Page from 'components/messenger-inbox-page';
import {
selectRoutedSupplierThread,
selectRoutedSupplierThreadMessages
} from 'services/messenger-service';
const selector = createSelector([
selectRoutedSupplierThread,
selectRoutedSupplierThreadMessages
], (
thread,
messages
) => ({
thread,
messages
}));
export default connect(selector)(Page);
function reduceMessenger(state, action) {
// ... reduce state
}
/** Select messenger state from our global state tree */
export function selectMessengerState(state) {
return state.messenger;
}
/** Select the thread between routed supplier (:supplierId) and authed team */
export const selectRoutedSupplierThread = createSelector(
[selectParams, selectAuthTeamId, selectDenormaliser, selectMessengerState],
({supplierId}, teamId, denormalise, messenger) =>
denormalise(messenger.threads.get(makeThreadKey(supplierId, teamId)))
);
/** Select the thread messages between routed supplier (:supplierId) and authed team */
export const selectRoutedSupplierThreadMessages = createSelector(
[selectRoutedSupplierThread, selectDenormaliser, selectMessengerState],
(thread, denormalise, messenger) =>
(thread && denormalise(messenger.threadMessages.get(thread.id))) || new List()
);
@oyeanuj
Copy link

oyeanuj commented Jun 22, 2016

Hi @chrisui! Thank you for posting this. I am very curious about your denormalise function - could you share code/logic/thinking in there?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment