日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

react中类组件this指向

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 react中类组件this指向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是一個標準的類組件

import React,{Component} from 'react'; class View extends Component{constructor(props){super(props)}state={} //寫在這里跟寫在constructor中一樣,都可以起到初始化的效果,并且可以省去thisfn(){}fn1(){}render(){return(<div><button onClick={this.fn}>按鈕</button><ul>{this.fn1()}</ul></div>) } }

接下來是this指向的問題

主要分三個模塊:

  • constructor:this指向new生成的實例,這里也就是我們的View組件了

  • render():this指向也是組件實例View

  • 方法:

    fn(): this指向是undefind fn1(): this指向是組件實例

為什么fn()的指向是undefined?

分析:
1、我們知道調用都是有()的,所以這里只是把onClick指向堆中的fn,調用時也就沒有實例————所以this會指向window
2、使用babel編譯后就是嚴格模式(嚴格模式下this不能指向window),所以this就會變為undefined

改變方法this指向的4種方法

  • 在contructor寫入this.fn=this.fn.bind(this)

    會在實例的屬性中添加一個fn屬性,指向改變this指向之后的fn(),原型鏈的的fn()并無變化。
    使用bind是因為不會自執行,而call,apply都會自執行

  • 方法使用箭頭函數的寫法fn=()=>{}

    箭頭函數this指向特性

  • 調用時使用箭頭函數,可以傳參()=>{this.fn("text")}
  • 調用時使用bind改變this指向,也可以傳參this.fn.bind(this,'text')
  • 總結

    以上是生活随笔為你收集整理的react中类组件this指向的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。