Skip to main content

Conditional Rendering

React

Definition

Conditional rendering in React means showing or hiding UI components based on a condition (like a boolean or value).


Syntax

1. if-else

if (condition) {
return <ComponentA />;
} else {
return <ComponentB />;
}

2. Ternary Operator

condition ? <ComponentA /> : <ComponentB />;

3. Logical AND (&&)

condition && <ComponentA />;

4. Switch Statement

switch (value) {
case 'one':
return <Component1 />;
default:
return <DefaultComponent />;
}

Example: Simple App using all conditionals

// App.tsx
import React, { useState } from 'react';
import Greeting from './Greeting';
import LoginStatus from './LoginStatus';
import RoleMessage from './RoleMessage';

const App: React.FC = () => {
const [isLoggedIn, setIsLoggedIn] = useState<boolean>(false);
const [role, setRole] = useState<'user' | 'admin' | 'guest'>('user'); // user | admin | guest

return (
<div>
<h1>React Conditionals Demo</h1>

{/* IF-ELSE inside Greeting */}
<Greeting isLoggedIn={isLoggedIn} />

{/* TERNARY inside LoginStatus */}
<LoginStatus isLoggedIn={isLoggedIn} />

{/* SWITCH inside RoleMessage */}
<RoleMessage role={role} />

{/* && condition inside App */}
{isLoggedIn && <p>Welcome back!</p>}

<button onClick={() => setIsLoggedIn(!isLoggedIn)}>
{isLoggedIn ? 'Logout' : 'Login'}
</button>

<br />
<select
onChange={(e) => setRole(e.target.value as 'admin' | 'user' | 'guest')}
value={role}
>
<option value="admin">Admin</option>
<option value="user">User</option>
<option value="guest">Guest</option>
</select>
</div>
);
};

export default App;
// Greeting.tsx (if-else)
import React from 'react';

interface Props {
isLoggedIn: boolean;
}

const Greeting: React.FC<Props> = ({ isLoggedIn }) => {
if (isLoggedIn) {
return <h2>Hello, User!</h2>;
} else {
return <h2>Please sign in.</h2>;
}
};

export default Greeting;
// LoginStatus.tsx (ternary)
import React from 'react';

interface Props {
isLoggedIn: boolean;
}

const LoginStatus: React.FC<Props> = ({ isLoggedIn }) => (
<p>Status: {isLoggedIn ? 'Logged In ✅' : 'Logged Out ❌'}</p>
);

export default LoginStatus;
// RoleMessage.tsx (switch)
import React from 'react';

interface Props {
role: 'admin' | 'user' | 'guest';
}

const RoleMessage: React.FC<Props> = ({ role }) => {
switch (role) {
case 'admin':
return <p>You are an admin 👑</p>;
case 'user':
return <p>Welcome, regular user 👤</p>;
case 'guest':
return <p>Browsing as guest 👥</p>;
default:
return <p>Unknown role</p>;
}
};

export default RoleMessage;

Svelte

Definition-Conditional rendering

Conditional rendering in Svelte means showing or hiding parts of the UI based on conditions like booleans or values using special templating syntax.


Syntax Overview

1.if-else

{#if condition}
<ComponentA />
{:else}
<ComponentB />
{/if}

2. Ternary Operator (in attributes or expressions only)

<p>{condition ? 'Yes' : 'No'}</p>

3. Logical AND (only in expressions)

{condition && <ComponentA />}

4.Switch Statement

{#if value === 'one'}
<Component1 />
{:else}
<DefaultComponent />
{/if}

Note: Svelte doesn't have built-in switch syntax; use chained if/else if blocks.


Example:Simple App using all conditionals

<!-- App.svelte -->
<script lang="ts">
import Greeting from './Greeting.svelte';
import LoginStatus from './LoginStatus.svelte';
import RoleMessage from './RoleMessage.svelte';

let isLoggedIn: boolean = false;
let role: 'user' | 'admin' | 'guest' = 'user';
</script>

<h1>Svelte Conditionals Demo</h1>

<!-- IF-ELSE inside Greeting -->
<Greeting {isLoggedIn} />

<!-- TERNARY inside LoginStatus -->
<LoginStatus {isLoggedIn} />

<!-- SWITCH (if-else chain) inside RoleMessage -->
<RoleMessage {role} />

<!-- && condition inside App -->
{#if isLoggedIn}
<p>Welcome back!</p>
{/if}

<button on:click={() => (isLoggedIn = !isLoggedIn)}>
{isLoggedIn ? 'Logout' : 'Login'}
</button>

<br />

<select bind:value={role}>
<option value="admin">Admin</option>
<option value="user">User</option>
<option value="guest">Guest</option>
</select>
<!-- Greeting.svelte -->
<script lang="ts">
export let isLoggedIn: boolean;
</script>

{#if isLoggedIn}
<h2>Hello, User!</h2>
{:else}
<h2>Please sign in.</h2>
{/if}
<!-- LoginStatus.svelte -->
<script lang="ts">
export let isLoggedIn: boolean;
</script>

<p>Status: {isLoggedIn ? 'Logged In ✅' : 'Logged Out ❌'}</p>
<!-- RoleMessage.svelte -->
<script lang="ts">
export let role: 'admin' | 'user' | 'guest';
</script>

{#if role === 'admin'}
<p>You are an admin 👑</p>
{:else if role === 'user'}
<p>Welcome, regular user 👤</p>
{:else if role === 'guest'}
<p>Browsing as guest 👥</p>
{:else}
<p>Unknown role</p>
{/if}