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

React事件處理過(guò)程中傳參的實(shí)現(xiàn)方法

 更新時(shí)間:2022年10月31日 10:19:12   作者:搞前端的小菜  
這篇文章主要介紹了React事件處理過(guò)程中傳參的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧

摘要

首先我們知道,在React中,是通過(guò)小駝峰式給元素綁定事件:

  fn = ()=>{
    //執(zhí)行代碼
  }
  button onClick={this.fn}>111</button>

但是如果有Vue的基礎(chǔ),可以很清楚的看到二者的區(qū)別。在Vue中,我們可以直接給fn傳遞參數(shù)。

但是如果在React中我們這么做:

  fn = (value)=>{
    //執(zhí)行代碼
    console.log(value)
  }
  button onClick={this.fn('2222')}>111</button>

你會(huì)發(fā)現(xiàn),在頁(yè)面加載的時(shí)候,2222已經(jīng)被打印出來(lái)了。但是點(diǎn)擊按鈕的時(shí)候并沒(méi)有效果。

這說(shuō)明,該方法并沒(méi)有被綁定在按鈕上,而是在按鈕加載的時(shí)候直接調(diào)用了。

而這一點(diǎn)也很好理解,React并沒(méi)有做向Vue這方面的處理,它是直接調(diào)用完,將返回值綁定給了onClick。所以這里我們要記住,事件綁定的時(shí)候,一定要綁定的是一個(gè)函數(shù)。

OK,現(xiàn)在了解了問(wèn)題所在,如果我想在調(diào)用方法的時(shí)候傳遞參數(shù),應(yīng)該怎么做呢?

1.箭頭函數(shù)

第一個(gè)方法,如果我們?cè)诮o按鈕綁定事件的時(shí)候,外層綁定的是一個(gè)箭頭函數(shù),里面才是我們寫的方法,似乎就能完美的解決問(wèn)題了:

  speak = (value) =>{
    alert(value)
  }
  <button onClick={() => {this.speak('qnmlgbd')}}>說(shuō)話</button>

通過(guò)箭頭函數(shù)的方式,直接給onClick綁定的就是我們定義的speak方法,并且傳遞好了參數(shù)。

2.函數(shù)柯里化

那如果箭頭函數(shù)可以,似乎我們直接在方法里面返回一個(gè)方法,也沒(méi)有什么問(wèn)題。

	  say = (value)=>{
	    return ()=>{
	      alert(value)
	    }
	  }
	 <button onClick={this.say('qnmlgbd')}>說(shuō)話</button>

通過(guò)這種方式,我們?cè)趏nClick綁定的時(shí)候,可以不用寫箭頭函數(shù)了,比較好看一點(diǎn)。但是原理和剛剛那種方式是一個(gè)樣子的。

3.bind方法

我們知道,bind方法是改變方法的this指向,并且返回的是一個(gè)方法。不會(huì)直接調(diào)用。

OK,如果bind有這個(gè)特性,我們就可以利用它解決這個(gè)問(wèn)題。

 loud(value){
   alert(value)
 }
<button onClick={this.loud.bind(this,'qnmlgbd')}>說(shuō)話</button>

這里可以注意一下,loud方法在定義的時(shí)候沒(méi)有采用箭頭函數(shù)的方式。而之前的兩個(gè)方法在定義的時(shí)候都使用了箭頭函數(shù)的方式。

這是因?yàn)?,在React中,如果定義函數(shù)不使用箭頭函數(shù),函數(shù)里面的this會(huì)是綁定事件的元素,而不是React組件。但是如果用bind方法進(jìn)行事件綁定,就不需要考慮這個(gè)問(wèn)題了。

最后我們總的看一下這三種方式的差別:

export default class Child extends Component {
  say = (value)=>{
    return ()=>{
      alert(value)
    }
  }
  speak = (value) =>{
    alert(value)
  }
  loud(value){
    alert(value)
  }
  render() {
    return (
      <div>
        <button onClick={this.say('qnmlgbd')}>說(shuō)話</button>
        <button onClick={() => {this.speak('qnmlgbd')}}>說(shuō)話</button>
        <button onClick={this.loud.bind(this,'qnmlgbd')}>說(shuō)話</button>
      </div>
    )
  }
}

到此這篇關(guān)于React事件處理過(guò)程中傳參的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)React事件處理 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react-router v4如何使用history控制路由跳轉(zhuǎn)詳解

    react-router v4如何使用history控制路由跳轉(zhuǎn)詳解

    這篇文章主要給大家介紹了關(guān)于react-router v4如何使用history控制路由跳轉(zhuǎn)的相關(guān)資料,文中通過(guò)示例代碼介紹的的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 淺談React和Redux的連接react-redux

    淺談React和Redux的連接react-redux

    本篇文章主要介紹了淺談React和Redux的連接react-redux,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • React中 Zustand狀態(tài)管理庫(kù)的使用詳解

    React中 Zustand狀態(tài)管理庫(kù)的使用詳解

    Zustand?是一個(gè)非常輕量、簡(jiǎn)潔的狀態(tài)管理庫(kù),旨在為 React 提供簡(jiǎn)便且高效的狀態(tài)管理,相比于 Redux 或 Context API,Zustand 具有更簡(jiǎn)潔、靈活和易于理解的優(yōu)點(diǎn),感興趣的朋友一起看看吧
    2024-12-12
  • React中控制子組件顯示隱藏的兩種方式及對(duì)比詳解

    React中控制子組件顯示隱藏的兩種方式及對(duì)比詳解

    在 react 中,如果我們想控制子組件的顯示和隱藏一般有兩種方式,一種是父組件維護(hù)子組件顯示隱藏狀態(tài),另一種則是通過(guò) forwardRef 直接設(shè)置子組件的狀態(tài)進(jìn)行維護(hù),這兩種方式各有優(yōu)缺點(diǎn),以及對(duì)于不同的使用場(chǎng)景不同,今天我們就來(lái)簡(jiǎn)單討論下,需要的朋友可以參考下
    2025-04-04
  • React中useLayoutEffect鉤子使用場(chǎng)景詳解

    React中useLayoutEffect鉤子使用場(chǎng)景詳解

    這篇文章主要為大家介紹了React中useLayoutEffect鉤子使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React 數(shù)據(jù)獲取與性能優(yōu)化詳解

    React 數(shù)據(jù)獲取與性能優(yōu)化詳解

    這篇文章主要為大家介紹了React 數(shù)據(jù)獲取與性能優(yōu)化方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • React?setState是異步還是同步原理解析

    React?setState是異步還是同步原理解析

    這篇文章主要為大家介紹了React?setState是異步還是同步原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 在React項(xiàng)目中動(dòng)態(tài)樣式切換的方法大全

    在React項(xiàng)目中動(dòng)態(tài)樣式切換的方法大全

    在 React 應(yīng)用開(kāi)發(fā)中,根據(jù)組件的狀態(tài)(state)、屬性(props) 或外部數(shù)據(jù)來(lái)動(dòng)態(tài)改變其外觀是一項(xiàng)極其常見(jiàn)的任務(wù),本文將全面、深入地探討在 React 項(xiàng)目中動(dòng)態(tài)切換樣式的各種方法,從基礎(chǔ)到高級(jí),并提供大量代碼示例和最佳實(shí)踐,需要的朋友可以參考下
    2025-09-09
  • 淺談React-router v6 實(shí)現(xiàn)登錄驗(yàn)證流程

    淺談React-router v6 實(shí)現(xiàn)登錄驗(yàn)證流程

    本文主要介紹了React-router v6 實(shí)現(xiàn)登錄驗(yàn)證流程,主要介紹了公共頁(yè)面、受保護(hù)頁(yè)面和登錄頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • React createElement方法使用原理分析介紹

    React createElement方法使用原理分析介紹

    這篇文章主要為大家介紹了React的createElement方法源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

宜春市| 齐齐哈尔市| 晴隆县| 象州县| 环江| 永平县| 平湖市| 柏乡县| 同仁县| 永昌县| 专栏| 江津市| 沅陵县| 木里| 金秀| 南部县| 德化县| 商河县| 龙陵县| 宝清县| 格尔木市| 天津市| 台南市| 运城市| 建湖县| 北海市| 禹州市| 德昌县| 蓝山县| 商南县| 榆林市| 瑞昌市| 花莲县| 兴隆县| 丹棱县| 天峨县| 谷城县| 金门县| 琼结县| 麻城市| 日照市|