- You can describe full Redux flow 📚
- You know how to dispatch Redux action (outside React context)
- You know what it does and can use
combineReducers
function - You know how to apply a middleware / enhancer when creating redux store
- You know what is a difference between middleware and enhancer
- You know how to apply selector functions to
useSelector
hook. 📚 - You know how to dispatch actions from React component. 📚
- You know how to implement your own
connect
higher order component
- You can use one of the listed toolset libraries to create reducers, action types, and action creators more efficiently
- You know how to create a reducer. 📚
- You know how to create an action creator 📚
- You understand how to leverage the fact that action creators serialize to action's type string.
- You know how to define a reducer function for a specific action type.
- You know how to use slices
- You know how to create reducers
- You can create your own action creators and action types.
- You know how to persist part of the state tree to local storage
- You understand benefits of using immutable data structures in Redux applications 📚
- You know how to use at least one of the libraries that provide immutable data structures in redux state 📚
- You know how to create a reducer that uses immer 📚
- You know how to convert immutable structure to regular JavaScript object
- You know the difference between only changing state object and returning a changed state object
- You can explain how immer works internally.
- You know how to create an immutable structure 📚
- You know how to read data from the immutable structure
- You know how to create a new data structure with modified state out of an existing one
- You know how to use the store with immutable structures using
redux-immutable
📚 - You know how to convert a json structure into immutable structure, and vice-versa
- You know how to manipulate big structures and which operations you should avoid in order to keep performance
- You know how to read data from the immutable structure
- You know how to create a new data structure with modified state out of an existing one
- You understand the difference between
immutable.js
andseamless-immutable
📚 - You know how to transform regular structures into seamless immutable structures, and vice-versa
- You know how to reconcile native functions (map, sort, etc) with seamless immutable functions (flatMap, merge, sort, etc)
- You know how to create a selector with
createSelector
function 📚 - You know how to create a selector that uses multiple other selectors as an input.
- You understand the concept of side effects 📚
- You know how to take a side effect and dispatch an action based on it 📚
- You know how to run asynchronous functions (e.g.
fetch
) after something dispatches an action - You know how to select data from Redux state using selector functions inside sagas. 📚
- You understand the concept of Javascript generators 📚
- You know how to wait for an another action from inside the running saga. 📚
- You know to sequence Sagas and how to run them in parallel 📚
- You can name
eventChannel
use cases and know how to implement a saga using it. 📚 - You can name
actionChannel
use cases and know how to implement a saga using it. 📚
- You know how to create your own routine
- You know how to promisify a routine
- You know how to wait for a routine fulfillment inside a component
- You understand the advantages of standardizing action type's name
- You know how to manipulate the payload with payloadCreator
- You know how to enhance the payload with metaCreator
We are very open to contributions to extend or change the requirements based on your gut and experience. To contribute you can use a pull request which will be later validated by our technical team and added to the main docs.
If you will spot any issues please add them in the Issues section.
This page is maintained by the 🔹 Flairs.ai and 🇵🇱 Apptension teams.
If you would like to create a dedicated Developer Handbook for your company, you can e-mail us 👉 [email protected]
© 2020 Flairs Sp. z o.o.
Built and maintained by Flairs and Apptension.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.