-
Notifications
You must be signed in to change notification settings - Fork 363
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove the need for base Action Creators to be thunks #2895
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ghost
assigned asauber
Jan 11, 2018
ghost
added
the
Backlog
label
Jan 11, 2018
Coverage increased (+0.1%) to 51.09% when pulling bad2f344a9ef7bf8c4eba5e4c27d8082f118cc18 on asauber:unthunk-action-creators into 3cbb467 on linode:develop. |
rjstires
approved these changes
Jan 12, 2018
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Honestly, and with all the sincerity in the world, excellent work. Well on the way to being teachable and testable.
asauber
force-pushed
the
unthunk-action-creators
branch
from
January 13, 2018 21:29
bad2f34
to
ae28b05
Compare
asauber
force-pushed
the
unthunk-action-creators
branch
from
January 13, 2018 21:59
620e59f
to
794f0dc
Compare
ghost
removed
the
Backlog
label
Jan 13, 2018
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, two of our base action creators are thunks, the action creator for updating "ONE" resource and the action creator for updating "MANY" resources.
The reason that these are thunks are to support dynamic accessor properties on the api endpoint configs. Every time a ONE or MANY action is dispatched the
dispatch
function is passed as part of the action. The reducer then uses this reference todispatch
to attach a thunk withObject.defineProperty ... get
on the objects stored in the Redux store. The only reason that these dynamically generated functions are thunks are so they can "cross-cut" the Redux state at runtime.This is an anti-pattern for multiple reasons. Functions should not be stored in Redux, because Redux stage should be serializable. Also, the Redux store should be as flat as possible, acting as a database for components to aggregate data and map this data to declarative properties.
Refer to this Redux Issue for an extended discussion.
reduxjs/redux#749
This PR removes this pattern, these dynamic properties, and implements flat state access for
linode.type
andlinode.image
, which were the only two use cases.