React官網(wǎng)學習實踐 - 條件渲染

在 React 中钥弯,你可以創(chuàng)建不同的組件來封裝各種你需要的行為祭刚。然后還可以根據(jù)應用的狀態(tài)變化只渲染其中的一部分译隘。

React 中的條件渲染和 JavaScript 中的一致粗恢,使用 JavaScript 操作符 if條件運算符來創(chuàng)建表示當前狀態(tài)的元素薇正,然后讓 React 根據(jù)它們來更新 UI片酝。

實例:
首先創(chuàng)建三個組件:

function UserGreeting(props) {
    return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
    return <h1>Please sign up.</h1>;
}

function Greeting(props) {
    const isLoggedIn = props.isLoggedIn;
    if (isLoggedIn) {
        return <UserGreeting />;
    }
    return <GuestGreeting />;
}

定義一個變量,是否登錄, isLoggedIn:

 constructor(props) {
        super(props);
        this.state = {
            isLoggedIn: true
        };

再定義一個button挖腰,并設置一個事件函數(shù)雕沿,點擊button修改登錄狀態(tài):

handleClick() {
        this.setState(prevState => ({
            isLoggedIn: !prevState.isLoggedIn
        }));
    }

 render() {
    return (
        <div>
            <Greeting isLoggedIn={this.state.isLoggedIn} />
            <button onClick={this.handleClick}>
                {this.state.isLoggedIn ? '登出' : '登錄'}
            </button>
        </div>
    );
  }

顯示:


Code:

import React, { Component } from 'react';
import './App.css';

function UserGreeting(props) {
    return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
    return <h1>Please sign up.</h1>;
}

function Greeting(props) {
    const isLoggedIn = props.isLoggedIn;
    if (isLoggedIn) {
        return <UserGreeting />;
    }
    return <GuestGreeting />;
}

class App extends Component {
    constructor(props) {
        super(props);
        this.state = {
            isLoggedIn: true
        };

        this.handleClick = this.handleClick.bind(this);
    }
    componentWillMount () {
        console.log('this is in componentWillMount method.');

    }
    componentDidMount () {
        console.log('this is in componentDidMount method.');
    }
    componentWillReceiveProps (nextProps) {
        console.log('this is in componentWillReceiveProps method.');
    }
    // shouldComponentUpdate (nextProps,nextState) {
    //     console.log('this is in shouldComponentUpdate method.');
    // }
    componentWillUpdate (nextProps,nextState) {
        console.log('this is in componentWillUpdate method.');
    }
    componentDidUpdate (prevProps,prevState) {
        console.log('this is in componentDidUpdate method.');
    }

    handleClick() {
        this.setState(prevState => ({
            isLoggedIn: !prevState.isLoggedIn
        }));
    }
    render() {
    return (
        <div>
            <Greeting isLoggedIn={this.state.isLoggedIn} />
            <button onClick={this.handleClick}>
                {this.state.isLoggedIn ? '登出' : '登錄'}
            </button>
        </div>
    );
  }
    componentWillUnmount () {
        console.log('this is in componentWillUnmount method.');
    }
}

export default App;

如果覺得文章寫得還行,請點個贊猴仑。如果想與我進一步交流审轮,可以關(guān)注我的公眾號或者加我的微信。

個人微信

公眾號_前端微說.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辽俗,一起剝皮案震驚了整個濱河市疾渣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榆苞,老刑警劉巖稳衬,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坐漏,居然都是意外死亡薄疚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門赊琳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來街夭,“玉大人,你說我怎么就攤上這事躏筏“謇觯” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵趁尼,是天一觀的道長埃碱。 經(jīng)常有香客問我,道長酥泞,這世上最難降的妖魔是什么砚殿? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮芝囤,結(jié)果婚禮上似炎,老公的妹妹穿的比我還像新娘辛萍。我一直安慰自己,他們只是感情好羡藐,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布贩毕。 她就那樣靜靜地躺著,像睡著了一般仆嗦。 火紅的嫁衣襯著肌膚如雪辉阶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天欧啤,我揣著相機與錄音睛藻,去河邊找鬼启上。 笑死邢隧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的冈在。 我是一名探鬼主播倒慧,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼包券!你這毒婦竟也來了纫谅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溅固,失蹤者是張志新(化名)和其女友劉穎付秕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侍郭,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡询吴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亮元。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猛计。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爆捞,靈堂內(nèi)的尸體忽然破棺而出奉瘤,到底是詐尸還是另有隱情,我是刑警寧澤煮甥,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布盗温,位于F島的核電站,受9級特大地震影響成肘,放射性物質(zhì)發(fā)生泄漏卖局。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一艇劫、第九天 我趴在偏房一處隱蔽的房頂上張望吼驶。 院中可真熱鬧惩激,春花似錦、人聲如沸蟹演。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酒请。三九已至骡技,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羞反,已是汗流浹背布朦。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昼窗,地道東北人是趴。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像澄惊,于是被迫代替她去往敵國和親唆途。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • React 條件渲染 在 React 中掸驱,你可以創(chuàng)建不同的組件來封裝各種你需要的行為肛搬。然后還可以根據(jù)應用的狀態(tài)變化...
    習慣芥末味閱讀 383評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,285評論 25 707
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料毕贼? 從這篇文章中你...
    hw1212閱讀 12,744評論 2 59
  • 今天的班會收獲特別大温赔,滿滿的干貨,每個大咖班主任的內(nèi)容都想分享 就說今天小榮班主任的發(fā)言帶給我的啟發(fā)吧 我平時的狀...
    622d5258d0ab閱讀 98評論 0 0
  • 如何吸引粉絲鬼癣,應該是諸位自媒體大俠的囊中寶典陶贼。不過,必須有連貫性的話題(魏武揮老師在微信公號上幾次變換主題扣溺,我擔心...
    一張紙兩個筆閱讀 150評論 0 0