50 Most Useful React Snippets




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 Componentp>;
  }
}

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 Effectp>;
};

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()}>Focusbutton>
    >
  );
};

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 Panelp> : <p>User Panelp>}
Enter fullscreen mode

Exit fullscreen mode



15. With Switch-like Logic

const Status = ({ code }) => {
  switch (code) {
    case 200: return <p>Successp>;
    case 400: return <p>Errorp>;
    default: return <p>Unknownp>;
  }
};
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!')}>Clickbutton>
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>Savebutton>
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)}>Resetbutton>
Enter fullscreen mode

Exit fullscreen mode




VII. Styling



25. Inline Style

<div style={{ color: 'red', padding: 10 }}>Styled Textdiv>
Enter fullscreen mode

Exit fullscreen mode



26. Conditional Class

<div className={isActive ? 'active' : 'inactive'}>Statusdiv>
Enter fullscreen mode

Exit fullscreen mode



27. CSS Modules

import styles from './Button.module.css';
<button className={styles.primary}>Clickbutton>
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 Occurredh3>;
    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>Onep>
  <p>Twop>
>
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}>Namelabel>
<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



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *