您好,登錄后才能下訂單哦!
本篇內容介紹了“React條件渲染實例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
條件渲染可以將一個數組內的所有數據依次展示在界面上,常用場景:文字列表、商品列表。React 中的條件渲染就和在 JavaScript 中的條件語句一樣。使用 JavaScript 操作符如 if 或者 條件操作符 來創建渲染當前狀態的元素,并且讓 React 更新匹配的 UI
先來看兩個組件:
function UserGreeting(props) { return 歡迎回來!; }function GuestGreeting(props) { return 請先注冊。; }
我們將創建一個 Greeting 組件,它會根據用戶是否登錄來顯示其中之一:
React 實例
function Greeting(props) { const isLoggedIn = props.isLoggedIn; if (isLoggedIn) { return ; } return ; } ReactDOM.render( // 嘗試修改 isLoggedIn={true}: false} />, document.getElementById('example') );
你可以使用變量來儲存元素。它可以幫助你有條件的渲染組件的一部分,而輸出的其他部分不會更改。 在下面的例子中,我們將要創建一個名為 LoginControl 的有狀態的組件。 它會根據當前的狀態來渲染 或 ,它也將渲染前面例子中的 。
React 實例
class LoginControl extends React.Component { constructor(props) { super(props); this.handleLoginClick = this.handleLoginClick.bind(this); this.handleLogoutClick = this.handleLogoutClick.bind(this); this.state = {isLoggedIn: false}; } handleLoginClick() { this.setState({isLoggedIn: true}); } handleLogoutClick() { this.setState({isLoggedIn: false}); } render() { const isLoggedIn = this.state.isLoggedIn; let button = null; if (isLoggedIn) { button = ; } else { button = ; } return ( {button} ); } } ReactDOM.render( , document.getElementById('example') );
你可以通過用花括號包裹代碼在 JSX 中嵌入任何表達式 ,也包括 JavaScript 的邏輯與 &&,它可以方便地條件渲染一個元素。
React 實例
function Mailbox(props) { const unreadMessages = props.unreadMessages; return ( Hello! {unreadMessages.length > 0 && 您有 {unreadMessages.length} 條未讀信息。 } ); } const messages = ['React', 'Re: React', 'Re:Re: React']; ReactDOM.render( , document.getElementById('example') );
在 JavaScript 中,true && expression 總是返回 expression,而 false && expression 總是返回 false。 因此,如果條件是 true,&& 右側的元素就會被渲染,如果是 false,React 會忽略并跳過它。
條件渲染的另一種方法是使用 JavaScript 的條件運算符:
condition ? true : false。
在下面的例子中,我們用它來有條件的渲染一小段文本。
render() { const isLoggedIn = this.state.isLoggedIn; return ( The user is {isLoggedIn ? 'currently' : 'not'} logged in. ); }
同樣它也可以用在較大的表達式中,雖然不太直觀:
render() { const isLoggedIn = this.state.isLoggedIn; return ( {isLoggedIn ? ( ) : ( )} ); }
在極少數情況下,你可能希望隱藏組件,即使它被其他組件渲染。讓 render 方法返回 null 而不是它的渲染結果即可實現。 在下面的例子中, 根據屬性 warn 的值條件渲染。如果 warn 的值是 false,則組件不會渲染:
React 實例
function WarningBanner(props) { if (!props.warn) { return null; } return ( "warning"> 警告! ); } class Page extends React.Component { constructor(props) { super(props); this.state = {showWarning: true} this.handleToggleClick = this.handleToggleClick.bind(this); } handleToggleClick() { this.setState(prevState => ({ showWarning: !prevState.showWarning })); } render() { return ( {this.state.showWarning ? '隱藏' : '顯示'} ); } } ReactDOM.render( , document.getElementById('example') );
組件的 render 方法返回 null 并不會影響該組件生命周期方法的回調。例如,componentWillUpdate 和 componentDidUpdate 依然可以被調用。
“React條件渲染實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。