- vừa được xem lúc

Làm chủ kỹ thuật render có điều kiện trong React: So sánh Logical && và Toán tử ba ngôi

0 0 3

Người đăng: Vũ Tuấn

Theo Viblo Asia

React xoay quanh việc xây dựng các giao diện động — và kỹ thuật render có điều kiện là một trong những công cụ quan trọng nhất trong bộ công cụ của bạn. Dù là hiển thị hồ sơ người dùng sau khi đăng nhập hay hiển thị spinner khi dữ liệu đang tải, việc biết khi nào và cách hiển thị nội dung dựa trên điều kiện là điều cốt lõi.

Trong bài viết này, chúng ta sẽ đi sâu vào cách sử dụng hai kỹ thuật render có điều kiện phổ biến nhất trong React: toán tử AND logic (&&) và toán tử ba ngôi (? :) — kèm theo ví dụ, các thực hành tốt và một vài lỗi thường gặp cần tránh.

Render có điều kiện là gì?

Render có điều kiện trong React cho phép bạn kiểm soát những gì được hiển thị trong giao diện người dùng dựa trên state hoặc props của component.

Hãy tưởng tượng nó như là câu lệnh if trong phần hiển thị component:

{isLoggedIn && <p>Welcome back!</p>} {items.length === 0 ? <p>No items</p> : <ul>{items.map(...)} </ul>}

Sử dụng toán tử && (AND logic)

Toán tử && rất phù hợp khi bạn chỉ muốn hiển thị một thứ gì đó nếu điều kiện là đúng.

Ví dụ:

{isLoggedIn && <h2>Welcome, user!</h2>}

Trong đó:

  • Nếu isLoggedIntrue, nó sẽ render <h2>.
  • Nếu false, không render gì cả.

Cẩn thận với các giá trị falsy như 0

{items.length && <p>{items.length} items</p>} // Renders 0!

Hãy ép kiểu về boolean bằng !!:

{!!items.length && <p>{items.length} items</p>}

Sử dụng toán tử ba ngôi ? :

Toán tử ba ngôi dùng để hiển thị một trong hai khối giao diện tuỳ vào điều kiện.

Ví dụ:

{isLoggedIn ? <Dashboard /> : <Login />}

Hoặc dùng trực tiếp trong dòng:

<button>{isLoading ? 'Loading...' : 'Submit'}</button>

Best practice

1. Ưu tiên trả về sớm (early return)

Thay vì viết lồng ghép phức tạp:

return ( <div> {user ? user.isAdmin ? <AdminPanel /> : <UserPanel /> : <Login />} </div>
)

Hãy viết gọn và rõ ràng hơn:

if (!user) return <Login />;
if (user.isAdmin) return <AdminPanel />;
return <UserPanel />;

2. Trích điều kiện ra thành biến

Giúp dễ đọc và dễ bảo trì hơn:

const showGreeting = isLoggedIn && user?.name; return showGreeting ? <h1>Hello, {user.name}</h1> : null;

Những lỗi thường gặp

  • Tránh render trực tiếp các giá trị như false, 0, hoặc undefined
  • Tránh viết quá nhiều ternary lồng nhau — hãy tách logic ra thành các hàm hoặc biến phụ trợ
  • Hiểu rõ các khái niệm truthy và falsy trong JavaScript

Lời kết

Render có điều kiện là một trong những tính năng mạnh mẽ nhất của React. Khi bạn làm chủ được cách sử dụng &&? :, bạn sẽ có thể xây dựng các giao diện phản hồi tốt, trực quan và linh hoạt theo hành vi người dùng cũng như trạng thái ứng dụng.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Redux Thunk

Chào mọi người, nếu bạn là người đã biết về React và đang làm quen với Redux chắc hẳn bạn đang rất mơ hồ về các khái niệm cơ bản của Redux như dispatch, store, action creator,... bạn còn đang vật lộn với đống document của Redux để hiểu những khái niệm đó và bạn nghe ai đó trong team nói về Redux Thu

0 0 409

- vừa được xem lúc

[React] Giới thiệu tổng quát về Redux Toolkit

1. Redux Toolkit (RTK) là gì và tại sao lại có nó. . .

0 0 6.7k

- vừa được xem lúc

Uống Pepsi code Vue đi - Uống Cocacola code React nha ;)

. (Nguồn ảnh: Internet). Chào các bạn, chào các bạn. Let's go . 1.

0 0 155

- vừa được xem lúc

Cài đặt taillwind css cho dự án React

Trong bài viết cùng mình tìm hiểu cách cài đặt tailwind css cho một dự án React sẵn có. .

0 0 155

- vừa được xem lúc

Formik vs React Hook Form (Phần 1)

Các lập trình viên Front End đều làm việc rất nhiều với form cùng sự phức tạp của ứng dụng. Do vậy chúng ta cần những thư viện form mạnh mẽ hỗ trợ quản lý các form state, form validation... Thành phần module. Formik bao gồm có 9 dependencies khác. . React Hook Form thì không có.

0 0 379

- vừa được xem lúc

Hướng dẫn React Redux cho người mới bắt đầu - Phần 1

Lời mởi đầu. Chào các bạn, ở thời điểm thực hiện bài viết này mình cũng là một người đang bắt đầu tìm hiểu và học với ReactJs và Redux, trong quá trình tìm hiểu đọc các tài liệu về thư viện này mình có tìm được một bài hướng dẫn khá hay nên đã quyết định chia sẻ với mọi người .

0 0 291