Use Particle.js in Your React Project

Use Particle.js in Your React Project

Steps to integrate Particle.js in your Project as Follows :

1. Know about Tsparticle.JS

Particle.js

  • You can browse themes in the present section, also attaching the image so

    you don't get confused

  • Current Theme: Tunnel 🚀

you can export the file by clicking the export button , as you can see in above photo.

2. Create React App

Create a new folder and open it with VsCode then :

  1. Open a new Terminal and type

     npx create-react-app
    
  2. If you are facing any issues you can check out React official Documentation

    React Documentation

3. Install the Particle.js Library

npm i react-tsparticles  
npm i tsparticles

If you get any issues, use –force, as this will force update everything, so it can resolve the issues.

npm i react-tsparticles –force 
npm i tsparticles –force
Particles.Js Useful Links

4. Next step: you have to create a component folder inside the src folder

  • Inside the component folder create one Particle.JSX file

  • then paste this code

  •   import Particles from "react-tsparticles";
      import { loadFull } from "tsparticles";
    
      const ParticleBackground = () => {
        const particlesInit = async (main) => {
          console.log(main);
    
          // you can initialize the tsParticles instance (main) here, adding custom shapes or presets
          // this loads the tsparticles package bundle, it's the easiest method for getting everything ready
          // starting from v2 you can add only the features you need reducing the bundle size
          await loadFull(main);
        };
    
        return (
          <Particles
            id="tsparticles"
            init={particlesInit}
            options={{
              autoPlay: true,
              background: {
                color: {
                  value: "#000000",
                },
                image: "",
                position: "",
                repeat: "",
                size: "",
                opacity: 1,
              },
              backgroundMask: {
                composite: "destination-out",
                cover: {
                  color: {
                    value: "#fff",
                  },
                  opacity: 1,
                },
                enable: false,
              },
              defaultThemes: {},
              delay: 0,
              fullScreen: {
                enable: true,
                zIndex: -1,
              },
              detectRetina: true,
              duration: 0,
              fpsLimit: 120,
              interactivity: {
                detectsOn: "window",
                events: {
                  onClick: {
                    enable: false,
                    mode: [],
                  },
                  onDiv: {
                    selectors: [],
                    enable: false,
                    mode: [],
                    type: "circle",
                  },
                  onHover: {
                    enable: false,
                    mode: [],
                    parallax: {
                      enable: false,
                      force: 2,
                      smooth: 10,
                    },
                  },
                  resize: {
                    delay: 0.5,
                    enable: true,
                  },
                },
                modes: {
                  trail: {
                    delay: 1,
                    pauseOnStop: false,
                    quantity: 1,
                  },
                  attract: {
                    distance: 200,
                    duration: 0.4,
                    easing: "ease-out-quad",
                    factor: 1,
                    maxSpeed: 50,
                    speed: 1,
                  },
                  bounce: {
                    distance: 200,
                  },
                  bubble: {
                    distance: 200,
                    duration: 0.4,
                    mix: false,
                    divs: {
                      distance: 200,
                      duration: 0.4,
                      mix: false,
                      selectors: [],
                    },
                  },
                  connect: {
                    distance: 80,
                    links: {
                      opacity: 0.5,
                    },
                    radius: 60,
                  },
                  grab: {
                    distance: 100,
                    links: {
                      blink: false,
                      consent: false,
                      opacity: 1,
                    },
                  },
                  push: {
                    default: true,
                    groups: [],
                    quantity: 4,
                  },
                  remove: {
                    quantity: 2,
                  },
                  repulse: {
                    distance: 200,
                    duration: 0.4,
                    factor: 100,
                    speed: 1,
                    maxSpeed: 50,
                    easing: "ease-out-quad",
                    divs: {
                      distance: 200,
                      duration: 0.4,
                      factor: 100,
                      speed: 1,
                      maxSpeed: 50,
                      easing: "ease-out-quad",
                      selectors: [],
                    },
                  },
                  slow: {
                    factor: 3,
                    radius: 200,
                  },
                  light: {
                    area: {
                      gradient: {
                        start: {
                          value: "#ffffff",
                        },
                        stop: {
                          value: "#000000",
                        },
                      },
                      radius: 1000,
                    },
                    shadow: {
                      color: {
                        value: "#000000",
                      },
                      length: 2000,
                    },
                  },
                },
              },
              manualParticles: [],
              particles: {
                bounce: {
                  horizontal: {
                    random: {
                      enable: false,
                      minimumValue: 0.1,
                    },
                    value: 1,
                  },
                  vertical: {
                    random: {
                      enable: false,
                      minimumValue: 0.1,
                    },
                    value: 1,
                  },
                },
                collisions: {
                  absorb: {
                    speed: 2,
                  },
                  bounce: {
                    horizontal: {
                      random: {
                        enable: false,
                        minimumValue: 0.1,
                      },
                      value: 1,
                    },
                    vertical: {
                      random: {
                        enable: false,
                        minimumValue: 0.1,
                      },
                      value: 1,
                    },
                  },
                  enable: false,
                  maxSpeed: 50,
                  mode: "bounce",
                  overlap: {
                    enable: true,
                    retries: 0,
                  },
                },
                color: {
                  value: "#fff",
                  animation: {
                    h: {
                      count: 0,
                      enable: false,
                      offset: 0,
                      speed: 20,
                      delay: 0,
                      decay: 0,
                      sync: true,
                    },
                    s: {
                      count: 0,
                      enable: false,
                      offset: 0,
                      speed: 1,
                      delay: 0,
                      decay: 0,
                      sync: true,
                    },
                    l: {
                      count: 0,
                      enable: false,
                      offset: 0,
                      speed: 1,
                      delay: 0,
                      decay: 0,
                      sync: true,
                    },
                  },
                },
                groups: {
                  z5000: {
                    number: {
                      value: 70,
                    },
                    zIndex: {
                      value: 50,
                    },
                  },
                  z7500: {
                    number: {
                      value: 30,
                    },
                    zIndex: {
                      value: 75,
                    },
                  },
                  z2500: {
                    number: {
                      value: 50,
                    },
                    zIndex: {
                      value: 25,
                    },
                  },
                  z1000: {
                    number: {
                      value: 40,
                    },
                    zIndex: {
                      value: 10,
                    },
                  },
                },
                move: {
                  angle: {
                    offset: 0,
                    value: 10,
                  },
                  attract: {
                    distance: 200,
                    enable: false,
                    rotate: {
                      x: 600,
                      y: 1200,
                    },
                  },
                  center: {
                    x: 50,
                    y: 50,
                    mode: "percent",
                    radius: 0,
                  },
                  decay: 0,
                  distance: {},
                  direction: "right",
                  drift: 0,
                  enable: true,
                  gravity: {
                    acceleration: 9.81,
                    enable: false,
                    inverse: false,
                    maxSpeed: 50,
                  },
                  path: {
                    clamp: true,
                    delay: {
                      random: {
                        enable: false,
                        minimumValue: 0,
                      },
                      value: 0,
                    },
                    enable: false,
                    options: {},
                  },
                  outModes: {
                    default: "out",
                    bottom: "out",
                    left: "out",
                    right: "out",
                    top: "out",
                  },
                  random: false,
                  size: false,
                  speed: 5,
                  spin: {
                    acceleration: 0,
                    enable: false,
                  },
                  straight: false,
                  trail: {
                    enable: false,
                    length: 10,
                    fill: {},
                  },
                  vibrate: false,
                  warp: false,
                },
                number: {
                  density: {
                    enable: false,
                    width: 1920,
                    height: 1080,
                  },
                  limit: 0,
                  value: 200,
                },
                opacity: {
                  random: {
                    enable: false,
                    minimumValue: 0.1,
                  },
                  value: 1,
                  animation: {
                    count: 0,
                    enable: false,
                    speed: 3,
                    decay: 0,
                    delay: 0,
                    sync: false,
                    mode: "auto",
                    startValue: "random",
                    destroy: "none",
                    minimumValue: 0.1,
                  },
                },
                reduceDuplicates: false,
                shadow: {
                  blur: 0,
                  color: {
                    value: "#000",
                  },
                  enable: false,
                  offset: {
                    x: 0,
                    y: 0,
                  },
                },
                shape: {
                  close: true,
                  fill: true,
                  options: {},
                  type: "circle",
                },
                size: {
                  random: {
                    enable: false,
                    minimumValue: 1,
                  },
                  value: 3,
                  animation: {
                    count: 0,
                    enable: false,
                    speed: 5,
                    decay: 0,
                    delay: 0,
                    sync: false,
                    mode: "auto",
                    startValue: "random",
                    destroy: "none",
                  },
                },
                stroke: {
                  width: 0,
                },
                zIndex: {
                  random: {
                    enable: false,
                    minimumValue: 0,
                  },
                  value: 5,
                  opacityRate: 0.5,
                  sizeRate: 1,
                  velocityRate: 1,
                },
                destroy: {
                  bounds: {},
                  mode: "none",
                  split: {
                    count: 1,
                    factor: {
                      random: {
                        enable: false,
                        minimumValue: 0,
                      },
                      value: 3,
                    },
                    rate: {
                      random: {
                        enable: false,
                        minimumValue: 0,
                      },
                      value: {
                        min: 4,
                        max: 9,
                      },
                    },
                    sizeOffset: true,
                    particles: {},
                  },
                },
                roll: {
                  darken: {
                    enable: false,
                    value: 0,
                  },
                  enable: false,
                  enlighten: {
                    enable: false,
                    value: 0,
                  },
                  mode: "vertical",
                  speed: 25,
                },
                tilt: {
                  random: {
                    enable: false,
                    minimumValue: 0,
                  },
                  value: 0,
                  animation: {
                    enable: false,
                    speed: 0,
                    decay: 0,
                    sync: false,
                  },
                  direction: "clockwise",
                  enable: false,
                },
                twinkle: {
                  lines: {
                    enable: false,
                    frequency: 0.05,
                    opacity: 1,
                  },
                  particles: {
                    enable: false,
                    frequency: 0.05,
                    opacity: 1,
                  },
                },
                wobble: {
                  distance: 5,
                  enable: false,
                  speed: {
                    angle: 50,
                    move: 10,
                  },
                },
                life: {
                  count: 0,
                  delay: {
                    random: {
                      enable: false,
                      minimumValue: 0,
                    },
                    value: 0,
                    sync: false,
                  },
                  duration: {
                    random: {
                      enable: false,
                      minimumValue: 0.0001,
                    },
                    value: 0,
                    sync: false,
                  },
                },
                rotate: {
                  random: {
                    enable: false,
                    minimumValue: 0,
                  },
                  value: 0,
                  animation: {
                    enable: false,
                    speed: 0,
                    decay: 0,
                    sync: false,
                  },
                  direction: "clockwise",
                  path: false,
                },
                orbit: {
                  animation: {
                    count: 0,
                    enable: false,
                    speed: 1,
                    decay: 0,
                    delay: 0,
                    sync: false,
                  },
                  enable: false,
                  opacity: 1,
                  rotation: {
                    random: {
                      enable: false,
                      minimumValue: 0,
                    },
                    value: 45,
                  },
                  width: 1,
                },
                links: {
                  blink: false,
                  color: {
                    value: "#ffffff",
                  },
                  consent: false,
                  distance: 100,
                  enable: false,
                  frequency: 1,
                  opacity: 0.4,
                  shadow: {
                    blur: 5,
                    color: {
                      value: "#000",
                    },
                    enable: false,
                  },
                  triangles: {
                    enable: false,
                    frequency: 1,
                  },
                  width: 1,
                  warp: false,
                },
                repulse: {
                  random: {
                    enable: false,
                    minimumValue: 0,
                  },
                  value: 0,
                  enabled: false,
                  distance: 1,
                  duration: 1,
                  factor: 1,
                  speed: 1,
                },
              },
              pauseOnBlur: true,
              pauseOnOutsideViewport: true,
              responsive: [],
              smooth: false,
              style: {},
              themes: [],
              zLayers: 100,
              emitters: {
                autoPlay: true,
                fill: true,
                life: {
                  wait: false,
                },
                rate: {
                  quantity: 1,
                  delay: 7,
                },
                shape: "square",
                startCount: 0,
                size: {
                  mode: "percent",
                  height: 0,
                  width: 0,
                },
                particles: {
                  shape: {
                    type: "images",
                    options: {
                      images: {
                        src: "https://particles.js.org/images/cyan_amongus.png",
                        width: 500,
                        height: 634,
                      },
                    },
                  },
                  size: {
                    value: 40,
                  },
                  move: {
                    speed: 10,
                    outModes: {
                      default: "none",
                      right: "destroy",
                    },
                    straight: true,
                  },
                  zIndex: {
                    value: 0,
                  },
                  rotate: {
                    value: {
                      min: 0,
                      max: 360,
                    },
                    animation: {
                      enable: true,
                      speed: 10,
                      sync: true,
                    },
                  },
                },
                position: {
                  x: -5,
                  y: 55,
                },
              },
              motion: {
                disable: false,
                reduce: {
                  factor: 4,
                  value: true,
                },
              },
            }}
          />
        );
      };
    
      export default ParticleBackground;
    
  • If you want to change the background theme, then change the value inside the options = { copied theme code here } which was exported by you from https://particles.js.org/.

  • Integrate your code carefully.

  • In case you don't find the options={} tag you can find it by ctrl+f in your Vscode

5. You have to import your Particle.jsx file into the App.jsx

import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import ParticleBackground from './components/Particle';

function App() {
  const [count, setCount] = useState(0)

  const onHandleClick = () => {
   setCount((count) => count + 1);
  }

  return (
    <>
      <ParticleBackground/>
      <div>
        <a href="https://vitejs.dev" target="_blank" rel="noreferrer">
          <img src={viteLogo} className="logo" alt="Vite logo" />
        </a>
        <a href="https://react.dev" target="_blank" rel="noreferrer">
          <img src={reactLogo} className="logo react" alt="React logo" />
        </a>
      </div>
      <h1>Vite + React</h1>
      <div className="card">
        <button onClick={onHandleClick}>
          count is {count}
        </button>
        <p>
          Edit <code>src/App.jsx</code> and save to test HMR
        </p>
      </div>
      <p className="read-the-docs">
        Click on the Vite and React logos to learn more
      </p>
    </>
  )
}

export default App

ScreenShot :

“When I wrote this code, only God and I understood what I did. Now only God knows.”

if you like this blog do share it with your friends.

Happy Coding 👨‍💻🚀to Everyone