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

React中事件的類型定義方式

 更新時間:2022年12月02日 10:17:02   作者:Pandy : )  
這篇文章主要介紹了React中事件的類型定義方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

React事件的類型定義

基本的事件類型

React 搞了一套自己的事件類型,所以你沒辦法使用 TypeScript 內(nèi)置提供的 MouseEvent 等等。在需要定義事件類型的時候,需要從 React 中導(dǎo)入:

import React, { Component, MouseEvent } from 'react';

export class Button extends Component {
? handleClick(event: MouseEvent) {
? ? event.preventDefault();
? ? alert(event.currentTarget.tagName); // alerts BUTTON
? }
??
? render() {
? ? return (
? ? <button onClick={this.handleClick}>
? ? ? {this.props.children}
? ? </button>
? ? );
? }
}

React 提供的事件類型有:

  • AnimationEvent 
  • ChangeEvent 
  • ClipboardEvent 
  • CompositionEvent 
  • DragEvent 
  • FocusEvent 
  • FormEvent 
  • KeyboardEvent 
  • MouseEvent 
  • PointerEvent 
  • TouchEvent 
  • TransitionEvent 
  • WheelEvent

還有一個 SyntheticEvent,用于其他所有的事件。

限制性的事件類型

如果需要限制事件類型,可以利用事件類型的泛型:

import React, { Component, MouseEvent } from 'react';

export class Button extends Component {
? /*
? ?* 這里我們將 handleClick 限制只能是在 HTMLButton 元素上
? ?*/
? handleClick(event: MouseEvent<HTMLButtonElement>) {
? ? event.preventDefault();
? ? alert(event.currentTarget.tagName); // alerts BUTTON
? }

? /*?
? ?* 支持聯(lián)合類型
? ?*/
? handleAnotherClick(event: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) {
? ? event.preventDefault();
? ? alert('Yeah!');
? }

? render() {
? ? return <button onClick={this.handleClick}>
? ? ? {this.props.children}
? ? </button>
? }
}

這里的限定的類型是 TypeScript 提供的 DOM 元素類型。

React四種定義事件方式

事件本身處的位置是一個屬性 如果屬性的值是一個函數(shù)

使用{}包裹,一定要保證該函數(shù)內(nèi)的this指向

import React, { Component } from 'react';
export default class App extends Component {
    constructor(props) {
        super(props);
        this.add1000Fn = this.add1000.bind(this)
    }
    state = {
        count:1
    }
    add10 = () => {
        this.setState({count:this.state.count + 10})
    }
    add100 = function() { // 一般寫為 add100 () {} 二者是等價的
        console.log(this);
        this.setState({count:this.state.count + 100})
    }
    add1000() {
        this.setState({count:this.state.count + 1000})
    }
    render() {
        return (
            <>
               <div>count:{ this.state.count}</div>
               {/* 1.事件定義方式1:直接在render里寫行內(nèi)的箭頭函數(shù)  */}
               <button onClick={ ()=>{
                   //如果該函數(shù)使用聲明式 function(){} 內(nèi)部的this指向為undefined
                    this.setState({count:++this.state.count})
               }}>加一</button>
 
               {/* 2.事件定義方式2:在組件內(nèi)使用箭頭函數(shù)定義的一個方法 */}
               <button onClick={this.add10}>加十</button>
 
               {/* 3.事件定義方式3:直接在組件內(nèi)定義一個非箭頭函數(shù)的方法,然后在render里直接使用`onClick={this.handleClick.bind(this)}` */}
               <button onClick={ this.add100.bind(this)}>加一百</button>
 
                {/* 4.事件定義方式4: 直接在組件內(nèi)定義一個非箭頭函數(shù)的方法,然后在constructor里bind(this)*/}
                <button onClick = { this.add1000Fn }>加1000</button>
            </>
        );
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • react:swr接口緩存案例代碼

    react:swr接口緩存案例代碼

    useSWR 是一個 React Hooks,是 HTTP 緩存庫 SWR 的核心方法之一,SWR 是一個輕量級的 React Hooks 庫,通過自動緩存數(shù)據(jù)來實現(xiàn) React 的數(shù)據(jù)獲取,本文給大家介紹react:swr接口緩存案例詳解,感興趣的朋友一起看看吧
    2023-11-11
  • 使用useMutation和React Query發(fā)布數(shù)據(jù)demo

    使用useMutation和React Query發(fā)布數(shù)據(jù)demo

    這篇文章主要為大家介紹了使用useMutation和React Query發(fā)布數(shù)據(jù)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • react-router-dom的使用說明

    react-router-dom的使用說明

    這篇文章主要介紹了react-router-dom的使用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 在React中實現(xiàn)分塊導(dǎo)出大量數(shù)據(jù)表格并壓縮成圖片的解決方案

    在React中實現(xiàn)分塊導(dǎo)出大量數(shù)據(jù)表格并壓縮成圖片的解決方案

    在現(xiàn)代Web開發(fā)中,處理和展示大量數(shù)據(jù)是一個常見的挑戰(zhàn),特別是在使用React框架時,我們經(jīng)常需要將這些數(shù)據(jù)以表格的形式展示,并提供導(dǎo)出功能,本文將介紹如何在React中實現(xiàn)一個高效、分塊導(dǎo)出大量數(shù)據(jù)表格,并將其壓縮為圖片的解決方案,需要的朋友可以參考下
    2024-12-12
  • React配置多個代理實現(xiàn)數(shù)據(jù)請求返回問題

    React配置多個代理實現(xiàn)數(shù)據(jù)請求返回問題

    這篇文章主要介紹了React之配置多個代理實現(xiàn)數(shù)據(jù)請求返回問題,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 談?wù)凴eact中的Render Props模式

    談?wù)凴eact中的Render Props模式

    這篇文章主要介紹了談?wù)凴eact中的Render Props模式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 可定制React自動完成搜索組件Turnstone實現(xiàn)示例

    可定制React自動完成搜索組件Turnstone實現(xiàn)示例

    這篇文章主要為大家介紹了可定制React自動完成搜索組件Turnstone實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • vite+react+tailwindcss的簡單使用方式

    vite+react+tailwindcss的簡單使用方式

    這篇文章主要介紹了vite+react+tailwindcss的簡單使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 關(guān)于React動態(tài)加載路由處理的相關(guān)問題

    關(guān)于React動態(tài)加載路由處理的相關(guān)問題

    這篇文章主要介紹了關(guān)于React動態(tài)加載路由處理的相關(guān)問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • React避免子組件無效刷新的三種解決方案

    React避免子組件無效刷新的三種解決方案

    這篇文章主要給大家介紹了React三種避免子組件無效刷新的解決方案,使用React.memo,使用React.useMemo或React.useCallback,將子組件作為children來傳遞這三種方案,文章通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08

最新評論

始兴县| 开封市| 石河子市| 普安县| 容城县| 枣阳市| 怀来县| 永城市| 安阳市| 古田县| 刚察县| 连江县| 昌黎县| 镇远县| 宁陵县| 林周县| 宁远县| 玉溪市| 巴林右旗| 旬邑县| 镇江市| 崇明县| 婺源县| 固镇县| 门源| 运城市| 大名县| 宁城县| 元朗区| 都江堰市| 永春县| 尼木县| 赤水市| 方正县| 游戏| 南雄市| 海淀区| 丹东市| 渝北区| 德格县| 定襄县|