작성 방법: 1. "onClick={this.handleClick}"을 사용합니다. 2. "onClick={this.handleClick.bind(this)}"를 사용합니다. 3. "{(params)=>this.handleClick을 사용합니다. ( 매개변수)}".
이 튜토리얼의 운영 환경: Windows 10 시스템, 반응 버전 17.0.1, Dell G3 컴퓨터.
본론으로 바로 들어가려면 먼저 버튼에 이벤트를 추가하는 올바른 방법을 살펴보겠습니다.
버튼에 onclick 이벤트를 추가하는 올바른 방법
// handlerClick은 <화살표 함수>를 사용하여
onClick = { this.handleClick }
// handleClick用箭头函数定义时,为onClick添加事件应该这么写:<Button onClick = { this.handleClick }></Button>
handleClick이 다음과 같이 정의됩니다.
handleClick = () => { // do something here};
또는
// handlerClick 사용 (일반 함수)
onClick = { this .handleClick.bind(this) }
// handleClick用普通函数定义时,为onClick添加事件应该这么写:<Button onClick = { this.handleClick.bind(this) }></Button>
handleClick은 다음과 같이 정의됩니다.
handleClick () { // do something here }
//handleClick은 <화살표 함수>를 사용하여 정의할 수 있습니다. ;/(일반 함수)
onClick = { (params ) => this.handleClick(params) }
// handleClick可以是箭头函数,也可以是普通函数<Button onClick = { (params) => this.handleClick(params) }></Button>
다음으로 이렇게 작성하는 것이 왜 올바른지 분석해 보겠습니다.
이해하세요 이 문제는 다음 문장에서 발생합니다.
화살표 함수에는 자체 this가 없으므로 이것이 정의될 때 컨텍스트의 this입니다.
일반 함수에는 자체 this가 있으므로 this는 컨텍스트의 this입니다. 실행될 때
먼저 첫 번째 항목을 살펴보겠습니다. 작성 방법:
아래 코드는 다음과 같습니다. onclick 이벤트(완전한 이벤트)를 추가합니다. jsx) 버튼
// examplePage.jsximport React from 'react';import { Button } from 'antd';class examplePage extends React.Component { // 2. 定义handleClick事件 handleClick = () => { console.log(this); //3. this指向examplePage } render() { return ( <p> // 1. 为onClick绑定 handleClick事件处理函数 <Button onClick = { this.handleClick }>click me</Button> </p> ) }}export default examplePage;
버튼을 클릭하고 examplePage this:
this: examplePage {props: Object, context: {}, refs: {}, updater: Object, state: {}에 대한 포인터를 인쇄합니다. ...}
분석:
먼저 살펴보겠습니다. 바인딩(this)이 사용되지 않으면 console.log(this)가 출력할 내용:
// examplePage.jsximport React from 'react';import { Button } from 'antd';class examplePage extends React.Component { // 2. !将箭头函数改为普通函数 handleClick () { console.log(this); // 3. this 为 undefined } render() { return ( <p> // 1. 为onClick绑定 handleClick事件处理函数 <Button onClick = { this.handleClick }>click me</Button> </p> ) }}export default examplePage;
버튼을 클릭하고 다음을 인쇄하세요:
this: undefine
Analytic:
참고: 엄격한 버전에서 기본값은 더 이상 창이 아니지만 정의되지 않았습니다
모듈 코드는 항상 엄격 모드 코드입니다.
ClassDeclaration 또는 ClassExpression의 모든 부분은 엄격합니다. 모드 코드입니다.
따라서 이 포인터를 변경하려면 바인드를 사용해야 합니다. 즉:
render() { return ( <p> // 用bind改变this指向 <Button onClick = { this.handleClick.bind(this) }>click me</Button> </p> )}
분석:
render() { return ( <p> // 通过箭头函数传参 <Button onClick = { (params) => this.handleClick(params) }></Button> </p> )}
<Button onClick = { () => this.handleClick() }></Button>
따라서 매개 변수가 전달되지 않으면 다음을 수행할 수 있습니다. 다음과 같이 작성하세요:
<Button onClick = { this.handleClick }></Button>
Summary
처음 세 가지 질문에 답할 수 있습니다//定义handleClick事件 handleClick = () => { // do something here }; //为onClick绑定handleClick事件处理函数 <Button onClick = {this.handleClick}></Button> // 不传参 <Button onClick = {(param) => this.handleClick(param) }></Button> // 传参
推荐学习:《react视频教程》
위 내용은 반응 클릭 이벤트를 작성하는 여러 가지 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!