HTML에서 JSX와 같은 방식으로 이벤트 핸들러를 추가 할 수없는 이유는 무엇입니까?

발레리

이 코드가 React JSX 에서 작동 하지만 HTML 에서는 작동하지 않는 이유 :

아래 코드는 태그의 속성 일뿐입니다. . 함수 handleClick 그냥 console.log 표시

이 코드는 React JSX 코드 에서 작동 합니다.

onClick={() => this.props.handleClick(1)}

이것은 HTML 에서 작동하지 않습니다 .

onclick={() => handleClick(1)}
  1. React JSX의 다른 함수에 handleClick 함수를 넣어야하는 이유는 무엇 입니까?
  2. HTML 에서 작동하지 않는 이유는 무엇 입니까?
Dai
  • ReactJS는 자체적 인 JSX 인터프리터 / 컴파일러를 가지고 있습니다.
  • "VanillaJS"(실제로 JavaScript 만 해당 )에서는 이러한 이점을 얻지 못합니다.
    • JSX 엔진을 JS 프로젝트로 가져 와서 이러한 종속성을 처리하고 싶지 않다면.

handleClickReact JSX의 다른 함수에 함수를 넣어야하는 이유는 무엇 입니까?

이 질문에 답하려면 더 많은 컨텍스트가 필요합니다.

HTML에서 작동하지 않는 이유는 무엇입니까?

onclick={() => handleClick(1)}

이것은 onclick함수 속성 이기 때문에 VanillaJS에서 작동하지 않습니다 .하지만 단순히 함수 속성을 새로운 함수로 덮어 쓸 수 있습니다onclick :

someButton.onclick = () => handleClick(1); // Warning: this will replace any existing `onclick` function property.

사실, 이것은 JavaScript 프로그래머가 동일한 이벤트에 여러 이벤트 핸들러를 addEventListener추가하기 위해 사용한 방법입니다. DOM에 추가되고 지원이 널리 보급되었습니다 (2000 년대 후반).

var currentOnClick = someButton.onclick;
someButton.onclick = function( e ) {
    if( currentOnClick ) currentOnClick( e );
    // do stuff 
};

물론 공식적인 방법은 DOM의 addEventListener기능 을 사용하는 것입니다.

someButton.addEventListener( 'click', handleClick.bind(this) );
// or:
someButton.addEventListener( 'click', () => handleClick(1) );
// or:
someButton.addEventListener( 'click', e => handleClick(1) );

자바 스크립트의 이벤트 처리 코드를 더 간결하게 만들고 싶다면 패치 EventTarget(부모 유형 addEventListener) :

Object.defineProperty( EventTarget.prototype, 'onclick2', {

    get() {
        if( typeof this.onclickHandlers == 'undefined' ) {
           this.onclickHandlers = [];
        }
        return this.onclickHandlers;
    }

    set( handlerFunc ) {

        if( typeof this.onclickHandlers == 'undefined' ) {
           this.onclickHandlers = [];
        }

        this.onclickHandlers.push( handlerFunc );

        this.addEventListener( 'click', handlerFunc );
    }

} );

용법:

someButton.onclick2 = () => doSomething();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

HTML을 제어 할 수 없을 때 요소에 이벤트 핸들러를 추가하는 방법은 무엇입니까?

분류에서Dev

[...]. append (...)와 같은 방식으로 append () 메서드를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

Blazor 서버를 사용할 때 클라이언트 DOM 자바 스크립트 이벤트 핸들러를 추가하는 방법은 무엇입니까?

분류에서Dev

Android에서 동적으로 생성 된 뷰를 만들 때 이벤트 핸들러를 추가하는 방법은 무엇입니까?

분류에서Dev

assetBundle에서 MeshCollider를 추가 할 때 메시에 액세스 할 수없는 것으로 표시되는 이유와 해결 방법은 무엇입니까?

분류에서Dev

Space 키를 수신하는 키 이벤트 핸들러를 추가하는 방법은 무엇입니까?

분류에서Dev

사용자가 SwiftUI에서 길게 누르기 제스처를 중지 할 때 이벤트 핸들러를 실행하는 방법은 무엇입니까?

분류에서Dev

VB6에서 핸들 (이벤트 핸들러가 아님)을 만드는 방법은 무엇입니까?

분류에서Dev

원격 이벤트 관리자에 로컬 이벤트 핸들러를 추가 할 수 있습니까?

분류에서Dev

fullCalendar에 이벤트를 동적으로 추가 할 때 eventClick을 사용하는 방법은 무엇입니까?

분류에서Dev

GWT 이벤트 핸들러를 추가 할 수 없습니다.

분류에서Dev

세션이 열려있는 동안 FileTransferProgress 핸들러를 추가 할 수없는 이유는 무엇입니까?

분류에서Dev

"이벤트 핸들러에서 데이터베이스에 변경 사항을 저장할 수 없음"을 해결하는 방법은 무엇입니까?

분류에서Dev

GCC와 같은 컴파일러가 벡터에서 데드 코드 제거를 수행 할 수없는 이유는 무엇입니까?

분류에서Dev

Lua 이벤트 핸들러 함수에서 'self'를 얻는 방법은 무엇입니까?

분류에서Dev

JavaScript의 이벤트 핸들러에서 공용 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

호환 모드의 Gawk가 GNU 확장을 사용할 때와 같은 방식으로 레코드를 분할하는 이유는 무엇입니까?

분류에서Dev

하나의 핸들러에서 여러 변경 이벤트를 처리하는 방법은 무엇입니까?

분류에서Dev

Vue 루프의 첫 번째 항목에 이벤트 핸들러를 추가하는 방법은 무엇입니까?

분류에서Dev

jest에서 지연된 이벤트 핸들러를 테스트하는 방법은 무엇입니까?

분류에서Dev

.one () 함수가 호출 된 후 이벤트 핸들러를 활성화하는 방법은 무엇입니까?

분류에서Dev

전단지 컨텍스트 메뉴 이벤트를 잡기 위해 이벤트 핸들러를 추가하는 방법은 무엇입니까?

분류에서Dev

이벤트에 DOM 요소를 생성 한 다음 DOM 요소가 존재할 때까지 이벤트 핸들러가 트리거되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

DOM 이벤트 핸들러 내에서 직접 범위 함수를 호출하는 가장 짧은 방법은 무엇입니까?

분류에서Dev

JQuery 이벤트 (추가)로 생성 된 요소를 선택할 수없는 이유는 무엇입니까?

분류에서Dev

사용자가 텔레 그램 봇에 유효한 응답을 할 때까지 함수와 핸들러를 반복하는 방법은 무엇입니까?

분류에서Dev

React : 이벤트 핸들러 내에서 반응 후크를 호출하는 방법은 무엇입니까?

분류에서Dev

동적으로 추가 된 이벤트 핸들러는 자바 스크립트에서 이전 이벤트 핸들러를 비활성화합니다.

분류에서Dev

자동으로 삽입 된 양식 이벤트 핸들러가 생성 된 방법에 따라 다른 이유는 무엇입니까?

Related 관련 기사

  1. 1

    HTML을 제어 할 수 없을 때 요소에 이벤트 핸들러를 추가하는 방법은 무엇입니까?

  2. 2

    [...]. append (...)와 같은 방식으로 append () 메서드를 사용할 수없는 이유는 무엇입니까?

  3. 3

    Blazor 서버를 사용할 때 클라이언트 DOM 자바 스크립트 이벤트 핸들러를 추가하는 방법은 무엇입니까?

  4. 4

    Android에서 동적으로 생성 된 뷰를 만들 때 이벤트 핸들러를 추가하는 방법은 무엇입니까?

  5. 5

    assetBundle에서 MeshCollider를 추가 할 때 메시에 액세스 할 수없는 것으로 표시되는 이유와 해결 방법은 무엇입니까?

  6. 6

    Space 키를 수신하는 키 이벤트 핸들러를 추가하는 방법은 무엇입니까?

  7. 7

    사용자가 SwiftUI에서 길게 누르기 제스처를 중지 할 때 이벤트 핸들러를 실행하는 방법은 무엇입니까?

  8. 8

    VB6에서 핸들 (이벤트 핸들러가 아님)을 만드는 방법은 무엇입니까?

  9. 9

    원격 이벤트 관리자에 로컬 이벤트 핸들러를 추가 할 수 있습니까?

  10. 10

    fullCalendar에 이벤트를 동적으로 추가 할 때 eventClick을 사용하는 방법은 무엇입니까?

  11. 11

    GWT 이벤트 핸들러를 추가 할 수 없습니다.

  12. 12

    세션이 열려있는 동안 FileTransferProgress 핸들러를 추가 할 수없는 이유는 무엇입니까?

  13. 13

    "이벤트 핸들러에서 데이터베이스에 변경 사항을 저장할 수 없음"을 해결하는 방법은 무엇입니까?

  14. 14

    GCC와 같은 컴파일러가 벡터에서 데드 코드 제거를 수행 할 수없는 이유는 무엇입니까?

  15. 15

    Lua 이벤트 핸들러 함수에서 'self'를 얻는 방법은 무엇입니까?

  16. 16

    JavaScript의 이벤트 핸들러에서 공용 함수를 호출하는 방법은 무엇입니까?

  17. 17

    호환 모드의 Gawk가 GNU 확장을 사용할 때와 같은 방식으로 레코드를 분할하는 이유는 무엇입니까?

  18. 18

    하나의 핸들러에서 여러 변경 이벤트를 처리하는 방법은 무엇입니까?

  19. 19

    Vue 루프의 첫 번째 항목에 이벤트 핸들러를 추가하는 방법은 무엇입니까?

  20. 20

    jest에서 지연된 이벤트 핸들러를 테스트하는 방법은 무엇입니까?

  21. 21

    .one () 함수가 호출 된 후 이벤트 핸들러를 활성화하는 방법은 무엇입니까?

  22. 22

    전단지 컨텍스트 메뉴 이벤트를 잡기 위해 이벤트 핸들러를 추가하는 방법은 무엇입니까?

  23. 23

    이벤트에 DOM 요소를 생성 한 다음 DOM 요소가 존재할 때까지 이벤트 핸들러가 트리거되는 것을 방지하는 방법은 무엇입니까?

  24. 24

    DOM 이벤트 핸들러 내에서 직접 범위 함수를 호출하는 가장 짧은 방법은 무엇입니까?

  25. 25

    JQuery 이벤트 (추가)로 생성 된 요소를 선택할 수없는 이유는 무엇입니까?

  26. 26

    사용자가 텔레 그램 봇에 유효한 응답을 할 때까지 함수와 핸들러를 반복하는 방법은 무엇입니까?

  27. 27

    React : 이벤트 핸들러 내에서 반응 후크를 호출하는 방법은 무엇입니까?

  28. 28

    동적으로 추가 된 이벤트 핸들러는 자바 스크립트에서 이전 이벤트 핸들러를 비활성화합니다.

  29. 29

    자동으로 삽입 된 양식 이벤트 핸들러가 생성 된 방법에 따라 다른 이유는 무엇입니까?

뜨겁다태그

보관