Skip to content

Instantly share code, notes, and snippets.

@levity
Last active October 6, 2017 23:11
Show Gist options
  • Save levity/347b3697a41588aec4cfb124e96e987b to your computer and use it in GitHub Desktop.
Save levity/347b3697a41588aec4cfb124e96e987b to your computer and use it in GitHub Desktop.
// before: store/selectors/getPost.js
const getPost = ormCreateSelector(
state => state,
state => orm.session(state.orm),
(state, props) => props.id,
(state, session, id) => {
try {
const post = session.Post.get({id})
return {
...post.ref,
creator: post.creator,
commenters: post.commenters.toModelArray(),
communities: post.communities.toModelArray()
}
} catch (e) {
return null
}
}
)
// after: store/selectors/getPost.js
const getPost = ormCreateSelector(
state => state,
state => orm.session(state.orm),
(state, props) => props.id,
(state, session, id) => session.Post.safeGet({id})
)
// after: components/MyComponent/MyComponent.store.js
const getPostTheWayILikeIt = createSelector(
getPost,
post => {
if (!post) return null
return {
...post.ref,
creator: post.creator,
commenters: post.commenters.toModelArray(),
communities: post.communities.toModelArray()
}
}
)
// alternative to above: components/MyComponent/MyComponent.connector.js
function mapStateToProps (state, props) {
const post = getPost(state, props)
const truncatedPost = {
...post.ref,
creator: post.creator,
commenters: post.commenters.toModelArray(),
communities: post.communities.toModelArray()
}
return {post: truncatedPost}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment