- list.map()
- list.filter()
- conditional-content
- conditional-styling
- dynamic inline style
- dynamic inline class
- styled-components
- css module
- react error message
- browser error message
- break point
- react DevTools
- reusable UI component
- user input state
- user input validation
- modal
- Fragments
- Portals
- Refs
- Controlled Component and Uncontrolled Component
- Side Effects
- useEffect()
- dependency array
- Cleanup
- object destructuring with useEffect
- useReducer()
- context API
- useContext()
- forwardRefs
- header and cart button
- dummy food list
- add food button
- amount input
- cart modal to order
- cart Context
- change quantity button
- close, order button
- cart animation
- React.memo()
- useCallback()
- useMemo()
- class based component
- component lifecycle (componentDidMount, componentDidUpdate, componentWillUnmount)
- class based component and context
- error boundary (componentDidCatch)
- http GET and POST
- fetch / then
- async / await
- loading state
- http error handling
- http request in useEffect()
- custom hooks
- http custom hooks
- form validation(onSubmit, lose focus, onChange)
- input custom hooks
- food list fetch (http request to firebase)
- userData form
- userData form validation
- order (http request to firebase)
- order state management(submitting, didSubmit)
- redux
- react-redux
- redux toolkit
- asynchronous operation in redux
- Thunk
- http request in redux
- redux DevTools
- react router
- Link
- Dynamic Routing
- Nested Routing
- react router v6
- react authentication
- access token
- expiration time
- page protection
- File-based Routing
- getStaticProps and getStaticPaths
- getServerSideProps
- MongoDB with Nextjs
- Next Head
- Deploying to Vercel
- css transition
- css animation
- react transition group
- custom hook store
- basic typescript (type, type inference, union, type alias, generics)
- typescript in react