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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

react回调函数_React中的回调中自动绑定ES6类函数

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 react回调函数_React中的回调中自动绑定ES6类函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用ES6類的React組件時,您必須遇到這種現象,必須顯式綁定類函數,然后將其傳遞給諸如onClick。例如,采用以下示例。

import React from 'react';class MyComponent extends React.Component {constructor(props) {super(props);this.state = {clicked: false};this.btnClick = this.btnClick.bind(this);}btnClick() {this.setState({clicked: true})}render() {return(<div><ul><li onClick={this.btnClick}>Hello World</li></ul></div>);} }

如您在上面的示例中看到的那樣,為了使btnClick工作正常,我們需要在構造函數中明確地“綁定”該方法。如果我們沒有這樣做,JavaScript將無法this在該btnClick方法中識別。這是因為在JavaScript中,默認情況下未綁定類方法。因此,在使用綁定方法后bind(),它將創建一個新的綁定函數,這是一個包裝原始函數對象的奇異函數對象(來自ECMAScript 2015的術語)。這將提供this對回調函數的訪問。在我們的情況下為btnClick。

使用公共類字段語法

基本上,公共類字段語法是Babel提供的實驗功能。在這里,您可以使用類字段正確綁定回調。這是上面的示例使用此語法的樣子。

import React from 'react';class MyComponent extends React.Component {state = {clicked: false}btnClick = () => {this.setState({clicked: true})}render() {return(<div><ul><li onClick={this.btnClick}>Hello World</li></ul></div>);} }

正如您在上面看到的,我們不再需要定義類的構造函數,因為class字段將實例化該類實例的屬性值。除此之外,由于我們現在使用JavaScript的數組函數語法,我們不再需要顯式綁定該函數,因為this箭頭函數內的作用域指向父作用域。

在回調中使用箭頭功能

import React from 'react';class MyComponent extends React.Component {constructor(props) {super(props);this.state = {clicked: false};}btnClick() {this.setState({clicked: true})}render() {return(<div><ul><li onClick={(e) => this.btnClick(e)}>Hello World</li></ul></div>);} }

但是,這種方法有一個缺點。因此,基本上,每次MyComponent渲染都會創建一個不同的回調。如果將此回調作為對較低組件的支持而傳遞,則可能會出現問題,這些組件可能會進行額外的重新渲染,這可能會降低渲染組件時的性能。

文章參考來源:React中的回調中自動綁定ES6類函數

總結

以上是生活随笔為你收集整理的react回调函数_React中的回调中自动绑定ES6类函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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