Skip to content

4. Conditional Rendering

Conditional rendering artinya merender sesuatu berdasarkan kondisi tertentu, mirip pada logika IF. Ada beberapa cara melakukan menyelesaikan hal ini.

1. Membuat Conditional Rendering

app/component/TextInput.tsx
interface InputProps {
  isError?: boolean;
  messageError?: string;
}

const InputText: React.FC<
  InputProps & React.InputHTMLAttributes<HTMLInputElement>
> = ({ messageError = "wajib di isi", isError = false, ...props }) => {
  return (
    <section>
      <input
        className="w-full h-8 border border-gray-700 rounded px-2"
        {...props}
      />
      {isError ? (
        <p className="text-red-500 font-bold">{messageError}</p>
      ) : (
        <></>
      )}
    </section>
  );
};

export default InputText;

Komponen InputText memiliki props isError yang mana props ini memiliki value boolean, memiliki default value adalah false dan bersifat optional.

Pada JSX kita membuat conditional Rendering dengan kondisi **Jika isError bernilai true maka akan merender props messageError dan jika false maka akan merender <> **

2. Penggil Komponen di app

app/page.tsx
'use client'  // gunakan use client karena ada onChange pda komponen
import Button from "./component/Button";
import InputText from "./component/InputText";
import Latihan from "./component/latihan";
import Note from "./component/Note";

const Home = () => {
  return (
    <main className="space-y-5">
      <h1>Hello World</h1>
      <InputText
        placeholder="username"
        type="text"
        isError
        messageError="Username not empty"
      />
      <InputText placeholder="******" type="passoword" isError />
      <InputText
        value={12}
        onChange={() => {
          console.log("ok");
        }}
      />

    </main>
  );
};

export default Home;

3. Jalankan pada Browser

Alt text

Perhatikan ketika isError bernilai true , maka akan merender pesan error.