最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React 組件中的state和setState()你知道多少

 更新時間:2022年03月18日 14:54:01   作者:cs_upupo  
這篇文章主要為大家詳細(xì)介紹了React組件中的state和setState(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

state的基本使用

狀態(tài)(state)即數(shù)據(jù),是組件內(nèi)部的私有數(shù)據(jù),只能在組件內(nèi)部使用

state的值是對象,可以通過this.state來獲取狀態(tài)。

setState()修改狀態(tài)

狀態(tài)是可變的,可以通過this.setState({要修改的數(shù)據(jù)})來改變狀態(tài)

注意:跟vue語法不同,不要直接修改state中的值,這時錯誤的!

//正確
 this.setState({
     count:this.state.count+1
 })
//錯誤
this.state.count+=1

最后結(jié)合以上內(nèi)容,寫了一個簡單的累加器,但是在此之前,我們需要解決this在自定義的方法中的指向問題,否則this指向會為undefined,我們一般希望this指向組件實例。

解決方法:

1.箭頭函數(shù)

 利用箭頭函數(shù)自身不綁定this的特點

class App extends React.Component{
    state={
       count:0, 
    }
    render(){
        // 箭頭函數(shù)中的this指向外部韓靜,此處指向render()方法
        return (
            <div>
                <span>總數(shù):{this.state.count}</span>
                <button onClick={()=>{
                    this.setState({
                        count:this.state.count+1
                    })
                }}>點擊+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

但是這種方法會導(dǎo)致JSX語法中代碼過于繁雜,不利于表明項目結(jié)構(gòu),一般不推薦使用。

2.Function.prototype.bind()

利用ES5中的bind方法,將事件處理程序中的this與組件示例綁定到一起

class App extends React.Component{
    constructor(){
        super()//super()必須寫,這時ES6語法中class的一個要求
        //此時可將state放到constructor()中
        this.state={
            count:0, 
         }
        this.add=this.add.bind(this)//將this指向綁定到實例
    }
    //事件處理程序
    add(){
        this.setState({
            count:this.state.count+1
        })
    }
    render(){
        // 箭頭函數(shù)中的this指向外部韓靜,此處指向render()方法
        return (
            <div>
                <span>總數(shù):{this.state.count}</span>
                <button onClick={this.add}>點擊+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

3.class的示例方法

利用箭頭函數(shù)形式的class實例方法,此方法比較簡潔,強(qiáng)烈推薦

注意:該語法是實驗性語法,但是由于腳手架中babel的存在,可以直接使用

class App extends React.Component{
    state={
        count:0, 
    }
    add=()=>{
        this.setState({
            count:this.state.count+1
        })
    }
    render(){
        // 箭頭函數(shù)中的this指向外部韓靜,此處指向render()方法
        return (
            <div>
                <span>總數(shù):{this.state.count}</span>
                <button onClick={this.add}>點擊+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!   

相關(guān)文章

  • React中使用外部樣式的3種方式(小結(jié))

    React中使用外部樣式的3種方式(小結(jié))

    這篇文章主要介紹了React中使用外部樣式的3種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JavaScript中React面向組件編程(上)

    JavaScript中React面向組件編程(上)

    本文主要介紹了React組件中默認(rèn)封裝了很多屬性,有的是提供給開發(fā)者操作的,其中有三個屬性非常重要:state、props、refs。感興趣的小伙伴可以參考閱讀
    2023-03-03
  • React中重新實現(xiàn)強(qiáng)制實施表單的流程步驟

    React中重新實現(xiàn)強(qiáng)制實施表單的流程步驟

    這篇文章主要介紹了React中重新實現(xiàn)強(qiáng)制實施表單的流程步驟,就像設(shè)計人員一樣,在添加邏輯之前,您需要為不同的狀態(tài)“模擬”或創(chuàng)建“模擬”,例如,這里只是表單的視覺部分的模擬,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 優(yōu)雅的在React項目中使用Redux的方法

    優(yōu)雅的在React項目中使用Redux的方法

    這篇文章主要介紹了優(yōu)雅的在React項目中使用Redux的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • React渲染機(jī)制及相關(guān)優(yōu)化方案

    React渲染機(jī)制及相關(guān)優(yōu)化方案

    這篇文章主要介紹了react中的渲染機(jī)制以及相關(guān)的優(yōu)化方案,內(nèi)容包括react渲染步驟、concurrent機(jī)制以及產(chǎn)生作用的機(jī)會,簡單模擬實現(xiàn) concurrent mode,基于作業(yè)調(diào)度優(yōu)先級的思路進(jìn)行項目優(yōu)化的兩個hooks,感興趣的小伙伴跟著小編一起來看看吧
    2023-07-07
  • react?+?vite?+?ts項目中優(yōu)雅使用.svg文件

    react?+?vite?+?ts項目中優(yōu)雅使用.svg文件

    這篇文章主要為大家介紹了react?+?vite?+?ts項目中優(yōu)雅使用.svg文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • React系列useSyncExternalStore學(xué)習(xí)詳解

    React系列useSyncExternalStore學(xué)習(xí)詳解

    這篇文章主要為大家介紹了React系列useSyncExternalStore的學(xué)習(xí)及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • React合成事件原理及實現(xiàn)(React18和React16)

    React合成事件原理及實現(xiàn)(React18和React16)

    本文主要介紹了React合成事件原理及實現(xiàn),包含React18和React16兩種版本,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • react-native ListView下拉刷新上拉加載實現(xiàn)代碼

    react-native ListView下拉刷新上拉加載實現(xiàn)代碼

    本篇文章主要介紹了react-native ListView下拉刷新上拉加載實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 詳解React中合并單元格的正確寫法

    詳解React中合并單元格的正確寫法

    用表格進(jìn)行頁面布局,頁面布局在各種瀏覽器的的兼容性, 本文主要介紹了詳解React中合并單元格的正確寫法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論

嘉义县| 桓仁| 会理县| 潍坊市| 靖西县| 桃源县| 江山市| 金沙县| 武川县| 四川省| 抚宁县| 崇明县| 来安县| 石门县| 汉阴县| 迭部县| 延吉市| 新安县| 正阳县| 达孜县| 内江市| 麻江县| 清远市| 金坛市| 石家庄市| 临澧县| 红安县| 樟树市| 呼和浩特市| 东乡族自治县| 北碚区| 柘荣县| 专栏| 永州市| 西乌珠穆沁旗| 大石桥市| 河间市| 高青县| 镇雄县| 曲阜市| 江达县|