
- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 特性
- ReactJS - 優點與缺點
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 校驗
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 進行元件生命週期管理
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - Map
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - Context
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - Fragments
- ReactJS - 高階元件
- ReactJS - 與其他庫整合
- ReactJS - 效能最佳化
- ReactJS - Profiler API
- ReactJS - Portals
- ReactJS - 無 ES6 ECMAScript 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - Reconciliation (協調)
- ReactJS - Refs 和 DOM
- ReactJS - Render Props
- ReactJS - 靜態型別檢查
- ReactJS - Strict Mode (嚴格模式)
- ReactJS - Web Components
- 其他概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 走馬燈
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - 條件渲染
React中的條件渲染
條件渲染用於根據情況向用戶顯示/隱藏UI的某些部分。例如,如果使用者未登入Web應用程式,則Web應用程式將顯示登入按鈕。當用戶登入Web應用程式時,相同的連結將被歡迎訊息替換。
讓我們學習React提供的支援條件渲染的選項。
條件渲染的方法
React提供了多種在Web應用程式中進行條件渲染的方法。它們如下所示:
條件語句
JSX/UI變數
JSX中的邏輯&&運算子
JSX中的條件運算子
null返回值
條件語句
條件語句是根據條件渲染UI的簡單直接的方法。讓我們考慮一下,需求是編寫一個元件,該元件將根據使用者的登入狀態顯示登入連結或歡迎訊息。以下是使用條件渲染實現元件的程式碼:
function Welcome(props) { if(props.isLoggedIn) { return <div>Welcome, {props.userName}</div> } else { return <div><a href="/login">Login</a></div> } }
這裡:
使用isLoggedIn props檢查使用者是否已登入。
如果使用者已登入,則返回歡迎訊息。
如果使用者未登入,則返回登入連結。
元件的使用方法如下所示:
function App() { return ( <div className="container"> <div style={{ padding: "10px" }}> <div> <Welcome isLoggedIn={true} userName={'John'} /> </div> </div> </div> ); }
元件將渲染歡迎訊息,如下所示:

JSX/UI變數
React允許將JSX元素儲存到變數中,並在需要時使用它。開發者可以透過條件語句建立必要的JSX並將其儲存在變數中。一旦UI儲存在變數中,就可以按如下所示渲染它:
function Welcome(props) { let output = null; if(props.isLoggedIn) { output = <div>Welcome, {props.userName}</div> } else { output = <div><a href="/login">Login</a></div> } return output }
在這裡,我們使用變數output來儲存UI。元件的使用方法如下:
function App() { return ( <div className="container"> <div style={{ padding: "10px" }}> <div> <Welcome isLoggedIn={true} userName={'John'} /> </div> </div> </div> ); }
元件將渲染歡迎訊息,如下所示:

邏輯&&運算子
React允許在JSX程式碼中使用任何表示式。在Javascript中,條件是從左到右應用的。如果最左邊的條件為假,則不會處理下一個條件。開發者可以利用此特性,在JSX本身中輸出訊息,如下所示:
function ShowUsers(props) { return ( <div> <ul> {props.users && props.users.length > 0 && props.users.map((item) => ( <li>{item}</li> ) )} </ul> </div> ); } export default ShowUsers;
這裡:
首先,將檢查props.users 的可用性。如果props.users為null,則不會進一步處理條件。
一旦props.users可用,則將檢查陣列的長度,並且只有當長度大於零時,才會進一步處理條件。
最後,將透過map函式遍歷props.users,並渲染使用者資訊作為無序列表。
元件的使用方法如下:
function App() { const users = ['John', 'Peter'] return ( <div className="container"> <div style={{ padding: "10px" }}> <div> <ShowUsers users={users} /> </div> </div> </div> ); }
元件將渲染使用者,如下所示:

JSX中的條件運算子
由於React允許在JSX中使用任何javascript表示式,因此開發者可以在JSX中使用條件運算子(a =b ? x : y)並僅渲染必要的UI元素,如下所示:
function Welcome(props) { if(props.isLoggedIn) { return props.isLoggedIn ? <div>Welcome, {props.userName}</div> : <div><a href="/login">Login</a></div> } }
在這裡,我們使用條件運算子來顯示歡迎訊息或登入連結。元件的使用方法如下:
function App() { return ( <div className="container"> <div style={{ padding: "10px" }}> <div> <Welcome isLoggedIn={true} userName={'John'} /> </div> </div> </div> ); }
元件將渲染歡迎訊息,如下所示:

null返回值
只有當元件返回UI元素時,React才會渲染元件。否則,它將靜默跳過渲染,沒有任何錯誤訊息。開發者可以利用此特性,僅在滿足條件時才渲染某些UI。
function Welcome(props) { return props.isLoggedIn ? <div>Welcome, {props.userName}</div> : null }
這裡:
我們使用條件運算子來顯示/隱藏歡迎訊息。
null不渲染任何UI。
元件的使用方法如下:
function App() { return ( <div className="container"> <div style={{ padding: "10px" }}> <div> <div>Welcome component will not output any content</div> <Welcome isLoggedIn={false} /> </div> </div> </div> </div> ); }
元件將渲染歡迎訊息,如下所示:

總結
React提供了多種方法來有條件地渲染UI元素。開發者必須透過分析情況來選擇方法。