This is one of the concepts I found most confusing when I started React. This post is a simple demonstration of how to render components with react using conditional rendering.
Let's get to it
🥦 Create a react project using npx create-react-app .
🥦 Then start the react app using this command: npm start
, this opens up the react page on the default localhost:3000
Clean Up
Next, we cleanup our src folder and just have a h1 tag inside the App.jsthat says Choose your favorite pet.
import logo from "./logo.svg";
import "./App.css";
function App() {
return (
<div className="App">
<h1>Choose your favorite pet</h1>
</div>
);
}
export default App;
🥦 Let's give this a well.
Our result:
🥦 Next, we create a component folder and a file, I call it Choose.jsx. You can call it whatever you like.
- Create a component
import React from "react";
export const Choose = () => {
return (
<div>
<p>I am a cute Dog</p>
<img
src="https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.countryliving.com%2Flife%2Fkids-pets%2Fnews%2Fa44032%2Fdog-owners-take-more-pictures-of-their-pet-than-their-spouse%2F&psig=AOvVaw1qbUbk4x640915cLFiHmZ0&ust=1642064745637000&source=images&cd=vfe&ved=0CAsQjRxqFwoTCMDU14Duq_UCFQAAAAAdAAAAABAJ"
alt="cute dog"
/>
</div>
);
};
🥦 Now let's import our Choose.jsx into the App.js component.
import "./App.css";
import { Choose } from "./components/Choose";
function App() {
return (
<div className="App">
<h1>Choose your favorite pet</h1>
<Choose />
</div>
);
}
export default App;
You should have the following on save:
🥦 Now let's write the logic that toggles our dog into a cat.
import useState
Hook and declare an initial value for your useState.
import { useState } from "react";
import "./App.css";
import { Choose } from "./components/Choose";
function App() {
const [toggle, setIsToggle] = useState(false)
return (
<div className="App">
<h1>Choose your favorite pet</h1>
<Choose />
</div>
);
}
export default App;
🥦 Next, we create a button with an onClick function, and we tell it to change the setToggle state to true
import { useState } from "react";
import "./App.css";
import { Choose } from "./components/Choose";
function App() {
const [toggle, setIsToggle] = useState(false);
return (
<div className="App">
<button onClick={() => setIsToggle(!toggle)}>Change</button>
<h1>Choose your favorite pet</h1>
<Choose />
</div>
);
}
export default App;
🥦 Now, whenever we click our button, the value of our toggle is set to the inverse of its initial value.
Let me show you how this works by adding a console.log to the isToggle variable.
import { useState } from "react";
import "./App.css";
import { Choose } from "./components/Choose";
function App() {
const [toggle, setIsToggle] = useState(false);
return (
<div className="App">
<button onClick={() => setIsToggle(!toggle)}>Change</button>
{console.log(toggle)}
<h1>Choose your favorite pet</h1>
<Choose />
</div>
);
}
export default App;
🥦 If you open your developer console by pressing f12 or use the inspect we have:
Now, using ternary operators, let's build a conditional rendering that says, "Render my lovely dog or give me a cat."
🎯 Method 1: Inline If with Logical && Operator
import { useState } from "react";
import "./App.css";
import { Choose } from "./components/Choose";
function App() {
const [toggle, setIsToggle] = useState(false);
return (
<div className="App">
<h1>Choose your favorite pet</h1>
<button onClick={() => setIsToggle(!toggle)}>Change</button>
{toggle && <Choose />}
</div>
);
}
export default App;
Explanation:
{toggle && <Choose />}
this means if toggle is true, render component.
🎯 Method 2: Inline If-Else with Conditional Operator
Let's bring our cat into the picture by declaring that if we can't choose between a dog and a cat, we'll take a cat.
In the Choose.jsx file, quickly develop and export a working component.
export const Cat = () => {
return (
<div>
<p>I am a cute Cat</p>
<img
src="https://th-thumbnailer.cdn-si-edu.com/ZoiTX0zdWNy5LOUC6Yh-qQsDcsE=/fit-in/1072x0/filters:focal(1834x1782:1835x1783)/https://tf-cmsv2-smithsonianmag-media.s3.amazonaws.com/filer/11/2c/112cfb7f-d73f-40d6-afab-7e05be7c7b73/andy_warhol_ch_6.jpg"
alt="cute cat"
width="500px"
height="380x"
/>
</div>
);
};
Now let's import it into our App.js
import { useState } from "react";
import "./App.css";
import { Cat, Choose } from "./components/Choose";
function App() {
const [toggle, setIsToggle] = useState(false);
return (
<div className="App">
<h1>Choose your favorite pet</h1>
<button onClick={() => setIsToggle(!toggle)}>Change</button>
<Cat />
{toggle && <Choose />}
</div>
);
}
export default App;
Our final code
import { useState } from "react";
import "./App.css";
import { Cat, Choose } from "./components/Choose";
function App() {
const [toggle, setIsToggle] = useState(false);
return (
<div className="App">
<h1>Choose your favorite pet</h1>
<button onClick={() => setIsToggle(!toggle)}>Change</button>
{toggle ? <Choose /> : <Cat />}
</div>
);
}
export default App;
This is where the magic happens {toggle ? <Choose /> : <Cat />}
.
Here, we are saying if toggle is true render which is our dog and if not render cat.
I hope you found this article useful.For reference, you can find the entire code here click. Thanks
Top comments (0)