Mohit Decodes
172 subscribers
68 photos
1 video
1 file
203 links
✨ Source Code for All Projects – Download & practice easily
πŸŽ“ Free Tutorials & Notes
πŸ› οΈ Coding Projects & Mini Apps
πŸ“Œ Subscribe on YouTube: Mohit Decodes πŸ””
πŸ“© For business inquiries: @MohitChoudhary0007
Download Telegram
React and JavaScript Developer Mock Interview | FRESHER | Real Interview Questions
https://youtu.be/pAitCb3BxdQ
❀1
Now, let's move to the next topic in Web Development Roadmap:

*βš›οΈ Simple CRUD UI in React*

Now you learn how real apps work.

πŸ‘‰ CRUD = Create, Read, Update, Delete

Every real application uses CRUD.

Examples
- Add task β†’ Create
- View tasks β†’ Read
- Edit task β†’ Update
- Delete task β†’ Delete


*πŸ”Ή What is CRUD in React*

CRUD means managing data using UI.

React handles CRUD using:
βœ… State
βœ… Events
βœ… Components

 

*🧠 Why CRUD is Important*
- Used in dashboards
- Used in admin panels
- Used in e-commerce apps
- Top interview question

If you know CRUD β†’ you can build real apps.
 

*🧩 Example Project: Todo List CRUD*
We will build:
βœ” Add item
βœ” Show item
βœ” Delete item
βœ” Update item

 

*✍️ Step 1: Setup State*
State stores list data.
import { useState } from "react";
function App() {
const [items, setItems] = useState([]);
return <div></div>;
}
export default App;
βœ” items β†’ list data
βœ” setItems() β†’ update list

 

*βž• Step 2: Create (Add Item)*
Add new item to list.
const [input, setInput] = useState("");
const addItem = () => {
setItems([...items, input]);
setInput("");
};
UI
<input value={input} onChange={(e) => setInput(e.target.value)} />
<button onClick={addItem}>Add</button>
 

*πŸ‘€ Step 3: Read (Show Items)*
Display list using map.
<ul>
{items.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
 

*❌ Step 4: Delete Item*
Remove item from list.
const deleteItem = (index) => {
const newItems = items.filter((_, i) => i !== index);
setItems(newItems);
};
UI
<button onClick={() => deleteItem(index)}>Delete</button>
 

*✏️ Step 5: Update Item (Edit)*
Update existing data.
const updateItem = (index) => {
const newValue = prompt("Update item");
const updated = [...items];
updated[index] = newValue;
setItems(updated);
};
UI
<button onClick={() => updateItem(index)}>Edit</button>
 

*βœ… Complete CRUD UI Example*
import { useState } from "react";
function App() {
const [items, setItems] = useState([]);
const [input, setInput] = useState("");
const addItem = () => {
if (!input) return;
setItems([...items, input]);
setInput("");
};
const deleteItem = (index) => {
setItems(items.filter((_, i) => i !== index));
};
const updateItem = (index) => {
const newValue = prompt("Update item");
if (!newValue) return;
const updated = [...items];
updated[index] = newValue;
setItems(updated);
};
return (
<div>
<h2>Todo CRUD</h2>
<input value={input} onChange={(e) => setInput(e.target.value)} />
<button onClick={addItem}>Add</button>
<ul>
{items.map((item, index) => (
<li key={index}>
{item}
<button onClick={() => updateItem(index)}>Edit</button>
<button onClick={() => deleteItem(index)}>Delete</button>
</li>
))}
</ul>
</div>
);
}
export default App;
 

*🧠 How CRUD Works Internally*
- User action β†’ event triggers
- State updates
- React re-renders UI

This is React’s core workflow.

 

*⚠️ Common Beginner Mistakes*
- Mutating state directly
- Forgetting key in list
- Not copying arrays before update
- Confusing state updates

 

*πŸ§ͺ Mini Practice Task*
- Build a simple student list CRUD
- Add student name
- Edit student name
- Delete student
- Show total count


*βœ… Mini Practice Task – Solution βš›οΈ*

This covers:
βœ” Add student
βœ” Edit student
βœ” Delete student
βœ” Show total count

 

*🧩 Complete Working Example*
import { useState } from "react";
function App() {
const [students, setStudents] = useState([]);
const [input, setInput] = useState("");

// βž• Add Student
const addStudent = () => {
if (!input.trim()) return;
setStudents([...students, input]);
setInput("");
};

// ❌ Delete Student
const deleteStudent = (index) => {
const updated = students.filter((_, i) => i !== index);
setStudents(updated);
};

// ✏️ Edit Student
const editStudent = (index) => {
const newName = prompt("Enter new name");
if (!newName || !newName.trim()) return;
const updated = [...students];
updated[index] = newName;
setStudents(updated);
};

return (
<div style={{ padding: "40px", fontFamily: "Arial" }}>
<h2>Student CRUD</h2>
{/* Input Section */}
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Enter student name"
/>
<button onClick={addStudent}>Add</button>
{/* Total Count */}
<p>Total Students: {students.length}</p>
{/* Student List */}
<ul>
{students.map((student, index) => (
<li key={index}>
{student}
<button onClick={() => editStudent(index)}>Edit</button>
<button onClick={() => deleteStudent(index)}>Delete</button>
</li>
))}
</ul>
</div>
);
}
export default App;
 

*🧠 What You Learned*
βœ… Managing list using state
βœ… Adding data using spread operator
βœ… Updating array safely
βœ… Filtering data to delete
βœ… Rendering list with .map()
βœ… Showing dynamic count

 

*⚠️ Interview Insight*
If interviewer asks:
πŸ‘‰ Why use [...students] before updating?

Answer: Because React state must not be mutated directly. We create a new copy to trigger re-render.

*Double Tap β™₯️ For More*
❀1
Now, let's move to the next topic in Web Development Roadmap:

*βš›οΈ React Hooks (useEffect & useRef)*

πŸ‘‰ Now you learn how React handles side effects and DOM access. These hooks are heavily used in real projects and interviews.

*🧠 What are React Hooks*
Hooks let you use React features inside functional components.

Before hooks β†’ class components required
After hooks β†’ functional components can do everything

βœ… *Common hooks*
- useState β†’ manage data
- useEffect β†’ handle side effects
- useRef β†’ access DOM or store values

*πŸ”„ Hook 1: useEffect (Side Effects)*

❓ *What is useEffect*

useEffect runs code when:
βœ… Component loads
βœ… State changes
βœ… Props change
βœ… Component updates

Simple meaning πŸ‘‰ Perform actions outside UI rendering.

πŸ“Œ *Why useEffect is needed*

Used for:
- API calls
- Fetch data from server
- Timer setup
- Event listeners
- Page load logic

*✍️ Basic Syntax*
import { useEffect } from "react";
useEffect(() => {
// code to run
}, []);

*πŸš€ Run only once (on page load)*

useEffect(() => {
console.log("Component mounted");
}, []);

πŸ‘‰ Empty dependency array β†’ runs once.

*πŸ”„ Run when state changes*

useEffect(() => {
console.log("Count changed");
}, [count]);

πŸ‘‰ Runs whenever count updates.


*⏱️ Real Example β€” Timer*

import { useState, useEffect } from "react";
function Timer() {
const [time, setTime] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setTime(t => t + 1);
}, 1000);
return () => clearInterval(interval);
}, []);
return <h2>{time}</h2>;
}

βœ” Runs timer automatically
βœ” Cleans memory using return

*🎯 Hook 2: useRef (Access DOM / Store Values)*

❓ *What is useRef*

useRef gives direct access to DOM elements. Also stores values without re-rendering.

Simple meaning πŸ‘‰ Reference to element or value.

πŸ“Œ *Why useRef is used*

- Focus input automatically
- Access DOM elements
- Store previous value
- Avoid re-render

*✍️ Basic Syntax*
import { useRef } from "react";
const inputRef = useRef();

*🎯 Example β€” Focus input automatically*
import { useRef } from "react";
function InputFocus() {
const inputRef = useRef();
const handleFocus = () => {
inputRef.current.focus();
};
return (
<div>
<input ref={inputRef} />
<button onClick={handleFocus}>Focus</button>
</div>
);
}

βœ” Button click focuses input.

*βš–οΈ useState, useEffect, and useRef β€” What's the difference?*

- useState: Stores changing data that triggers re-renders.
- useEffect: Runs side effects (e.g., API calls, timers).
- useRef: Accesses DOM elements or stores values without re-rendering.

*⚠️ Common Beginner Mistakes*
- Forgetting dependency array in useEffect
- Infinite loops in useEffect
- Using useRef instead of state
- Not cleaning side effects

*πŸ§ͺ Mini Practice Task*
- Print message when component loads using useEffect
- Create timer using useEffect
- Focus input automatically using useRef
- Store previous value using useRef

*βœ… Mini Practice Task – Solution βš›οΈ*

*🟦 1️⃣ Print message when component loads (useEffect)*
import { useEffect } from "react";
function App() {
useEffect(() => {
console.log("Component loaded successfully");
}, []); // runs only once
return <h2>Check console</h2>;
}
export default App;
βœ… Runs once when page loads.

*⏱️ 2️⃣ Create timer using useEffect*
import { useState, useEffect } from "react";
function Timer() {
const [time, setTime] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setTime((t) => t + 1);
}, 1000);
return () => clearInterval(interval); // cleanup
}, []);
return <h2>Time: {time}</h2>;
}
export default Timer;
βœ… Increases every second
βœ… Clears interval to prevent memory leak

*🎯 3️⃣ Focus input automatically using useRef*

import { useRef } from "react";
function FocusInput() {
const inputRef = useRef();
const handleFocus = () => {
inputRef.current.focus();
};
return (
<div>
<input ref={inputRef} placeholder="Enter text" />
<button onClick={handleFocus}>Focus Input</button>
</div>
);
}
export default FocusInput;
βœ… Click button β†’ input gets focus.


*πŸ”„ 4️⃣ Store previous value using useRef*

import { useState, useEffect, useRef } from "react";
function PreviousValue() {
const [count, setCount] = useState(0);
const prevCount = useRef();
useEffect(() => {
prevCount.current = count;
});
return (
<div>
<h2>Current: {count}</h2>
<h2>Previous: {prevCount.current}</h2>
<button onClick={() => setCount(count + 1)}> Increase </button>
</div>
);
}
export default PreviousValue;

βœ… Stores previous state without re-rendering.

*🧠 What You Learned*
βœ… Run code on component load
βœ… Handle side effects safely
βœ… Access DOM using useRef
βœ… Store values without re-render
βœ… Clean up side effects

➑️ *Double Tap β™₯️ For More*
❀1
πŸ‘1
Now, let's move to the next topic in Web Development Roadmap:

🌐 *Backend Basics β€” Node.js & Express*

Now you move from frontend (React) β†’ backend (server side).

Frontend = UI, Backend = Logic + Database + APIs.

🟒 *What is Node.js* ❓
- Node.js is a JavaScript runtime that runs outside the browser.
- Built on Chrome V8 engine, allows JavaScript to run on server.

🧠 *Why Node.js is Popular*
- Same language (JS) for frontend + backend
- Fast and lightweight
- Large ecosystem (npm)
- Used in real companies

⚑ *How Node.js Works*
- Single-threaded, event-driven, non-blocking I/O
- Handles many requests efficiently, good for APIs, real-time apps, chat apps

*πŸ“¦ What is npm*
- npm = Node Package Manager
- Used to install libraries, manage dependencies, run scripts

Example: npm install express

πŸš€ *What is Express.js* ❓
- Express is a minimal web framework for Node.js.
- Makes backend development easy, clean routing, easy API creation, middleware support

*🧩 Basic Express Server Example*
- Install Express: npm init -y, npm install express
- Create server.js:
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello Backend");
});
app.listen(3000, () => {
console.log("Server running on port 3000");
});
- Creates server, handles GET request, sends response, listens on port 3000

*πŸ”„ What is an API*
- API = Application Programming Interface
- Frontend talks to backend using APIs, usually in JSON format

*🧠 Common HTTP Methods (Backend)*
- GET: Fetch data
- POST: Send data
- PUT: Update data
- DELETE: Remove data

*⚠️ Common Beginner Mistakes*
- Forgetting to install express
- Not using correct port
- Not sending response
- Confusing frontend and backend

*πŸ§ͺ Mini Practice Task*
- Create basic Express server
- Create route /about
- Create route /api/user returning JSON
- Start server and test in browser

βœ… *Mini Practice Task – Solution* 🌐

*🟒 Step 1️⃣ Install Express*
Open terminal inside project folder:
npm init -y
npm install express

βœ” Creates package.json
βœ” Installs Express framework

πŸ“„ *Step 2️⃣ Create server.js*

Create a file named server.js and add:

const express = require("express");
const app = express();

// Home route
app.get("/", (req, res) => {
res.send("Welcome to my server");
});

// About route
app.get("/about", (req, res) => {
res.send("This is About Page");
});

// API route returning JSON
app.get("/api/user", (req, res) => {
res.json({ name: "Deepak", role: "Developer", age: 25 });
});

// Start server
app.listen(3000, () => {
console.log("Server running on http://localhost:3000");
});

*▢️ Step 3️⃣ Start the Server*
Run in terminal:
node server.js

You should see: Server running on http://localhost:3000

*🌍 Step 4️⃣ Test in Browser*
Open these URLs:
- http://localhost:3000/ β†’ Welcome message
- http://localhost:3000/about β†’ About page text
- http://localhost:3000/api/user β†’ JSON response

*Double Tap β™₯️ For More*
❀2