Day 4 ReactJS Adventures + Distriator Progress: useState, useEffect, and .env Chaos 😹

Words
504
Reading
3 min
1y
Listen to this post
~3 min

👋 Hello Hive Community!

Another day, another ReactJS rollercoaster! 🎢
We've been deep-diving into ReactJS while pushing progress on Project Distriator and CheckInWithXYZ 💪

Let’s rewind ⏪ what we’ve covered so far:


🎯 Today's Goals

  1. Learn to integrate .env in React project 🔐
  2. Implement first useState 🎛️
  3. Try out useEffect (and totally freak out a little) 😵
  4. Share Distriator project updates 📈

🔑 How to Load .env Values in React (Vite-based)

dot env reference image

If you're using Vite + React like us, it's super simple 👇

🗂️ Step 1: Create a .env file
🛑 Don’t forget to put it inside .gitignore

✨ Prefix all variables with VITE_, like:

VITE_API_KEY=some_key_here

🔓 Access it in your app like this:

import.meta.env.VITE_API_KEY

🔄 How to Use useState

setState example image

useState lets you track and update values inside functional components 📦

✅ Step 1: Import it

import { useState } from "react";

✅ Step 2: Declare a variable

const [businesses, setBusinesses] = useState([]);

In Distriator, we're tracking a list of businesses – so we start with an empty array.

  • businesses: current value
  • setBusinesses: to update the state

Simple & elegant 😎


🌀 How to Use useEffect (AKA: “Why is my API Calling TWICE?!”)

useEffect Reference image

Okay... so this one had me like 😵‍💫
I initially wrote:

useEffect(() => {
  const fetchedData = async () => {
    // some logic to fetch businesses
  }
  fetchedData();
});

💣 Result: Infinite reload loop! App was like: "I LIVE TO FETCH!"
I panicked, closed the app, went into full bug-hunting mode 🕵️

🧠 The Fix?

I forgot the dependency array []

useEffect(() => {
  const fetchedData = async () => {
    // some logic to fetch businesses
  }
  fetchedData();
}, []); // Important!

But even then... API was hit twice 😑

Two times API calls

Screenshot 2025-07-29 at 5.43.52 AM.png

🎯 Removing StrictMode is a fix...
But let’s be real – not the best one!

controller

Turns out, the smarter way is to use AbortController to clean up async functions.

And yeah... it’s a bit weird. 👇

weird

Let’s move on before I rage-quit 🙃


🏨 Distriator Project Updates

Big win on Distriator today! 🎉
We’ve successfully integrated all rooms of Ati Hotel 🛏️
Deployment is live at: alpha.distriator.com 🚀

Distriator Changes

☝️ Screenshot above highlights just one file’s worth of changes, but the impact is massive!

Tagging ecoinstant@ecoinstant & starkerz@starkerz so you guys can start playing around on the alpha site!


🙏 Thanks for Following Along!

I’ll be back soon with more learnings, bugs, laughs & updates.
Until then — keep building, keep shipping! 💻✨

See you in the next post! 🚀


📝 Final Note


🚀 My Contributions to ♦️ Hive Ecosystem

ContributionToHiveEcosystem
Hive Witness NodeHive API Node (in progress)3Speak Video Encoder Node Operator (highest number of nodes)3Speak Mobile App Developer
3Speak Podcast App Developer3Speak Shorts App Developer3Speak Support & Maintenance TeamDistriator Developer
CheckinWithXYZHive InboxHiFindHive Donate App
Contributed to HiveAuth Mobile AppEcency ↔ 3Speak IntegrationEcency ↔ InLeo IntegrationEcency ↔ Actifit Integration
Hive Stats AppVote for Witness AppHiveFlutterKitNew 3Speak App

🙌 Support Back

❤️ Appreciate my work? Consider supporting threespeak@threespeak & sagarkothari88@sagarkothari88! ❤️

VoteForWitness
sagarkothari88sagarkothari88@sagarkothari88
threespeakthreespeak@threespeak

Day 4 ReactJS Adventures + Distriator Progress: useState, useEffect... | Ecency