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

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

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

state的基本使用

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

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

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

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

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

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

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

解決方法:

1.箭頭函數(shù)

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

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
                    })
                }}>點(diǎn)擊+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

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

2.Function.prototype.bind()

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

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

3.class的示例方法

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

注意:該語法是實(shí)驗(yàn)性語法,但是由于腳手架中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}>點(diǎn)擊+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ì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JavaScript中React面向組件編程(上)

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

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

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

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

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

    這篇文章主要介紹了優(yōu)雅的在React項(xiàng)目中使用Redux的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    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ī)會(huì),簡單模擬實(shí)現(xiàn) concurrent mode,基于作業(yè)調(diào)度優(yōu)先級(jí)的思路進(jìn)行項(xiàng)目優(yōu)化的兩個(gè)hooks,感興趣的小伙伴跟著小編一起來看看吧
    2023-07-07
  • react?+?vite?+?ts項(xiàng)目中優(yōu)雅使用.svg文件

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

    這篇文章主要為大家介紹了react?+?vite?+?ts項(xiàng)目中優(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合成事件原理及實(shí)現(xiàn)(React18和React16)

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

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

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

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

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

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

最新評(píng)論

佛教| 衡阳市| 五台县| 泸定县| 清水县| 客服| 河南省| 肇东市| 巫溪县| 安乡县| 如皋市| 昭苏县| 乌审旗| 阳原县| 太和县| 田阳县| 营口市| 建宁县| 容城县| 泰宁县| 宁陵县| 舟山市| 双鸭山市| 乐业县| 吉木乃县| 玉溪市| 通州区| 淮滨县| 昌都县| 城市| 虎林市| 伊宁县| 沛县| 都安| 信丰县| 中卫市| 西充县| 望江县| 万源市| 怀柔区| 牙克石市|