React: Warunkowe renderowanie komponentów

Opublikowano: 24.01.2023 - tagi: JavaScript React Komponent

W React można wyświetlać komponenty w zależności od stanu. Takie renderowanie nazywamy warunkowym.

Sposób 1: Instrukcja if

import React, { useState } from 'react';

const SalePrice = () => {
    return <h2>Price: 100$</h2>;
}

const DiscountPrice = () => {
    return <h2>Price: only 99$!!!</h2>;
}

const ProductPrice = ({isOnSale}) => {
    if (isOnSale) {
        return <DiscountPrice />
    }

    return <SalePrice />
}

const App = () => {
    const [discountPrice, setDiscountPrice] = useState(false);

    return <div>
            <ProductPrice isOnSale={discountPrice} />
            <button onClick={() => setDiscountPrice(!discountPrice)}>Toggle price</button>
        </div>;
}

Sposób 2: Operator ?:

const App = () => {
    const [discountPrice, setDiscountPrice] = useState(false);

    return <div>
            {discountPrice ? <DiscountPrice /> : <SalePrice />}
            <button onClick={() => setDiscountPrice(!discountPrice)}>Toggle price</button>
        </div>;
}

Sposób 3: Operator AND

const App = () => {
    const [error, setError] = useState(false);

    return <div>
            {error && <h2>Error!</h2>}
            <button onClick={() => setError(!error)}>Toggle error</button>
        </div>;
}

Sposób 4: Wartość null

Jeśli masz taki przypadek, że nic nie chcesz wyświetlać, wyślij po prostu wartość null:

const Error = ({message}) => {
    if (!message) {
        return null;
    }

    return <h2>{message}</h2>;
}

const App = () => {
    const [error, setError] = useState(null);

    return <div>
        <Error message={error} />
        <button onClick={() => setError('Error!')}>Set error</button>
        <button onClick={() => setError(null)}>Remove error</button>
    </div>;
}