1. Functional Component (Basic) import React from ' react ' ; const MyComponent = () => { return < h2 > Hello, World!</ h2 >; }; export default MyComponent ; Enter fullscreen mode Exit fullscreen mode 2. Functional Component with Props import React from ' react ' ; const Greeting = ({ name }) => < h1 > Hello, { name } !</ h1 >; export default Greeting ; Enter fullscreen mode Exit fullscreen mode 3. Class Component import React , { Component } from ' react ' ; class MyClassComponent extends Component { render () { return < p > Hello from Class Component</ p >; } } export default MyClassComponent ; Enter fullscreen mode Exit fullscreen mode II. State Management with Hooks 4. useState for Counter import React , { useState } from ' react ' ; const Counter = () => { const [ count , setCount ] = useState ( 0 ); return ( <> < p > { count } </ p > < button onClick = { () => setCount ( count + 1 ) } > +</ button > </> ); }; export default Counter ; Enter fullscreen mode Exit fullscreen mode 5. useState with Object import React , { useState } from ' react ' ; const Profile = () => { const [ user , setUser ] = useState ({ name : ' John ' , age : 25 }); return ( <> < p > { user . name } - { user . age } </ p > < button onClick = { () => setUser ({ ... user , age : user . age + 1 }) } > Aging... </ button > </> ); }; export default Profile ; Enter fullscreen mode Exit fullscreen mode 6. useEffect on Mount import React , { useEffect } from ' react ' ; const Hello = () => { useEffect (() => { console . log ( ' Mounted! ' ); }, []); return < p > Hello Effect</ p >; }; export default Hello ; Enter fullscreen mode Exit fullscreen mode 7. useEffect with Fetch import React , { useEffect , useState } from ' react ' ; const FetchUser = ({ id }) => { const [ user , setUser ] = useState ( null ); useEffect (() => { fetch ( `https://jsonplaceholder.typicode.com/users/ ${ id } ` ) . then ( res => res . json ()) . then ( setUser ); }, [ id ]); if ( ! user ) return < p > Loading...</ p >; return < p > { user . name } </ p >; }; export default FetchUser ; Enter fullscreen mode Exit fullscreen mode 8. useContext for Theme import React , { createContext , useContext , useState } from ' react ' ; const ThemeContext = createContext (); export const ThemeProvider = ({ children }) => { const [ theme , setTheme ] = useState ( ' light ' ); return ( < ThemeContext . Provider value = { { theme , setTheme } } > { children } </ ThemeContext . Provider > ); }; export const ThemeButton = () => { const { theme , setTheme } = useContext ( ThemeContext ); return ( < button onClick = { () => setTheme ( theme === ' light ' ? ' dark ' : ' light ' ) } > Theme: { theme } </ button > ); }; Enter fullscreen mode Exit fullscreen mode 9. useRef Focus Input import React , { useRef } from ' react ' ; const FocusInput = () => { const inputRef = useRef (); return ( <> < input ref = { inputRef } /> < button onClick = { () => inputRef . current . focus () } > Focus</ button > </> ); }; export default FocusInput ; Enter fullscreen mode Exit fullscreen mode 10. useCallback import React , { useState , useCallback } from ' react ' ; const Button = React . memo (({ onClick }) => < button onClick = { onClick } > +</ button >); const App = () => { const [ count , setCount ] = useState ( 0 ); const inc = useCallback (() => setCount ( c => c + 1 ), []); return <>< p > { count } </ p >< Button onClick = { inc } /></>; }; export default App ; Enter fullscreen mode Exit fullscreen mode 11. useMemo import React , { useState , useMemo } from ' react ' ; const Expensive = ({ n }) => { const result = useMemo (() => { let res = 0 ; for ( let i = 0 ; i < n * 100000 ; i ++ ) res += i ; return res ; }, [ n ]); return < p > { result } </ p >; }; export default Expensive ; Enter fullscreen mode Exit fullscreen mode 12. useReducer import React , { useReducer } from ' react ' ; const reducer = ( state , action ) => { switch ( action . type ) { case ' inc ' : return { count : state . count + 1 }; case ' dec ' : return { count : state . count - 1 }; default : return state ; } }; const Counter = () => { const [ state , dispatch ] = useReducer ( reducer , { count : 0 }); return ( <> < p > { state . count } </ p > < button onClick = { () => dispatch ({ type : ' inc ' }) } > +</ button > < button onClick = { () => dispatch ({ type : ' dec ' }) } > -</ button > </> ); }; export default Counter ; Enter fullscreen mode Exit fullscreen mode III. Conditional Rendering 13. With && { isLoggedIn && < p > Welcome!</ p >} Enter fullscreen mode Exit fullscreen mode 14. With Ternary { isAdmin ? < p > Admin Panel</ p > : < p > User Panel</ p >} Enter fullscreen mode Exit fullscreen mode 15. With Switch-like Logic const Status = ({ code }) => { switch ( code ) { case 200 : return < p > Success</ p >; case 400 : return < p > Error</ p >; default : return < p > Unknown</ p >; } }; Enter fullscreen mode Exit fullscreen mode IV. List Rendering 16. Map Over Array < ul > { items . map ( i => < li key = { i . id } > { i . name } </ li >) } </ ul > Enter fullscreen mode Exit fullscreen mode 17. Nested Lists { data . map ( cat => ( < div key = { cat . id } > < h3 > { cat . name } </ h3 > < ul > { cat . items . map ( it => < li key = { it } > { it } </ li >) } </ ul > </ div > ))} Enter fullscreen mode Exit fullscreen mode V. Event Handling 18. onClick Handler < button onClick = { () => alert ( ' Clicked! ' ) } > Click</ button > Enter fullscreen mode Exit fullscreen mode 19. Input Change < input value = { text } onChange = { e => setText ( e . target . value ) } /> Enter fullscreen mode Exit fullscreen mode 20. Prevent Form Submit < form onSubmit = { e => { e . preventDefault (); save (); } } > < button > Save</ button > </ form > Enter fullscreen mode Exit fullscreen mode VI. Forms 21. Controlled Input < input value = { value } onChange = { e => setValue ( e . target . value ) } /> Enter fullscreen mode Exit fullscreen mode 22. Multiple Inputs < input name = "username" onChange = { e => setForm ({... form , [ e . target . name ]: e . target . value }) } /> Enter fullscreen mode Exit fullscreen mode 23. Checkbox Group < input type = "checkbox" checked = { checked } onChange = { e => setChecked ( e . target . checked ) } /> Enter fullscreen mode Exit fullscreen mode 24. Form Reset < button onClick = { () => setForm ( initial ) } > Reset</ button > Enter fullscreen mode Exit fullscreen mode VII. Styling 25. Inline Style < div style = { { color : ' red ' , padding : 10 } } > Styled Text</ div > Enter fullscreen mode Exit fullscreen mode 26. Conditional Class < div className = { isActive ? ' active ' : ' inactive ' } > Status</ div > Enter fullscreen mode Exit fullscreen mode 27. CSS Modules import styles from ' ./Button.module.css ' ; < button className = { styles . primary } > Click</ button > Enter fullscreen mode Exit fullscreen mode VIII. Component Patterns 28. Higher-Order Component const withLogger = Comp => props => { console . log ( props ); return < Comp { ... props } />; }; Enter fullscreen mode Exit fullscreen mode 29. Render Props const Mouse = ({ children }) => { const [ pos , setPos ] = useState ({ x : 0 , y : 0 }); return < div onMouseMove = { e => setPos ({ x : e . clientX , y : e . clientY }) } > { children ( pos ) } </ div >; }; Enter fullscreen mode Exit fullscreen mode 30. Custom Hook const useWindowWidth = () => { const [ w , setW ] = useState ( window . innerWidth ); useEffect (() => { const h = () => setW ( window . innerWidth ); window . addEventListener ( ' resize ' , h ); return () => window . removeEventListener ( ' resize ' , h ); }, []); return w ; }; Enter fullscreen mode Exit fullscreen mode IX. Error Handling 31. Error Boundary class ErrorBoundary extends React . Component { state = { hasError : false }; static getDerivedStateFromError () { return { hasError : true }; } render () { if ( this . state . hasError ) return < h3 > Error Occurred</ h3 >; return this . props . children ; } } Enter fullscreen mode Exit fullscreen mode X. Performance & Optimization 32. React.memo const MyComp = React . memo (({ value }) => < p > { value } </ p >); Enter fullscreen mode Exit fullscreen mode 33. Lazy Loading const LazyComp = React . lazy (() => import ( ' ./LazyComp ' )); < Suspense fallback = { < p > Loading...</ p > } > < LazyComp /> </ Suspense > Enter fullscreen mode Exit fullscreen mode 34. Dynamic Import import ( ' ./math ' ). then ( module => module . add ( 2 , 3 )); Enter fullscreen mode Exit fullscreen mode XI. Miscellaneous 35. Fragment <> < p > One</ p > < p > Two</ p > </> Enter fullscreen mode Exit fullscreen mode 36. Children Prop const Card = ({ children }) => < div className = "card" > { children } </ div >; Enter fullscreen mode Exit fullscreen mode 37. Spread Props < input { ... props } /> Enter fullscreen mode Exit fullscreen mode 38. forwardRef const MyInput = React . forwardRef (( props , ref ) => < input ref = { ref } { ... props } />); Enter fullscreen mode Exit fullscreen mode 39. useId (for accessibility) const id = useId (); < label htmlFor = { id } > Name</ label > < input id = { id } /> Enter fullscreen mode Exit fullscreen mode 40. useLayoutEffect useLayoutEffect (() => { console . log ( ' DOM ready ' ); }, []); Enter fullscreen mode Exit fullscreen mode 41. useImperativeHandle useImperativeHandle ( ref , () => ({ focus : () => inputRef . current . focus () })); Enter fullscreen mode Exit fullscreen mode 42. Portals ReactDOM . createPortal (< Modal />, document . getElementById ( ' modal-root ' )); Enter fullscreen mode Exit fullscreen mode 43. Suspense with Data < Suspense fallback = { < p > Loading...</ p > } > < Profile /> </ Suspense > Enter fullscreen mode Exit fullscreen mode 44. useTransition const [ isPending , start ] = useTransition (); Enter fullscreen mode Exit fullscreen mode 45. useDeferredValue const deferred = useDeferredValue ( value ); Enter fullscreen mode Exit fullscreen mode 46. Debounce with useEffect useEffect (() => { const id = setTimeout (() => search ( query ), 500 ); return () => clearTimeout ( id ); }, [ query ]); Enter fullscreen mode Exit fullscreen mode 47. Throttling Scroll useEffect (() => { const onScroll = throttle (() => setY ( window . scrollY ), 200 ); window . addEventListener ( ' scroll ' , onScroll ); return () => window . removeEventListener ( ' scroll ' , onScroll ); }, []); Enter fullscreen mode Exit fullscreen mode 48. Key Press Hook const useKey = ( key , cb ) => { useEffect (() => { const handler = e => e . key === key && cb (); window . addEventListener ( ' keydown ' , handler ); return () => window . removeEventListener ( ' keydown ' , handler ); }, [ key , cb ]); }; Enter fullscreen mode Exit fullscreen mode 49. Dark Mode Hook const useDarkMode = () => { const [ dark , setDark ] = useState ( false ); useEffect (() => { document . body . classList . toggle ( ' dark ' , dark ); }, [ dark ]); return [ dark , setDark ]; }; Enter fullscreen mode Exit fullscreen mode 50. Custom Fetch Hook const useFetch = url => { const [ data , setData ] = useState ( null ); useEffect (() => { fetch ( url ). then ( r => r . json ()). then ( setData ); }, [ url ]); return data ; }; Enter fullscreen mode Exit fullscreen mode
Top comments (0)