React에서 클래스 메서드의 컨텍스트는 기본적으로 바인딩되지 않습니다. 이러한 메서드 내에서 구성 요소의 상태 또는 props에 액세스할 때 해당 컨텍스트를 바인딩해야 합니다.
함수를 바인딩하는 방법에는 여러 가지가 있습니다.
1. 생성자 바인딩:
class SomeClass extends Component { constructor() { super(); this.someEventHandler = this.someEventHandler.bind(this); } someEventHandler(event) {} }
2. 굵은 화살표 기능:
class SomeClass extends Component { someEventHandler = (event) => { }; }
3. 인라인 람다 함수 바인딩:
onChange={(event) => this.someEventHandler(event)}
4. .bind() 메소드 바인딩:
onChange={this.someEventHandler.bind(this)}
1. 인라인 람다 함수 바인딩:
onChange={(event) => this.someEventHandler(event)}
2. .bind() 메서드 바인딩:
onChange={this.someEventHandler.bind(this)}
적절한 바인딩 방법은 구성 요소의 구조와 필요한 기능에 따라 다릅니다.
사전 바인딩(생성자 바인딩 또는 Fat Arrow 함수):
런타임 바인딩(인라인 Lambda 함수 바인딩 또는 .bind() 메서드):
추가 매개변수 전달:
제공된 코드에서 snippet:
render() { return <input onChange={this.someEventHandler.bind(this)} />; }
이것은 someEventHandler의 컨텍스트를 구성 요소 인스턴스에 바인딩하는 .bind() 메서드를 사용하는 런타임 바인딩입니다.
render() { return ; }
이것은 .bind() 메서드를 사용하는 런타임 바인딩입니다. someEventHandler의 컨텍스트를 구성 요소 인스턴스에 바인딩하는 인라인 람다 함수.
render() { return <input onChange={this.someEventHandler} />; }
이는 추가 매개변수가 없는 런타임 바인딩입니다. 하지만 올바른 컨텍스트가 유지되도록 하려면 생성자에서 someEventHandler 함수를 미리 바인딩하거나 굵은 화살표 함수를 사용하는 것이 좋습니다.
위 내용은 React에서 함수와 이벤트 핸들러를 바인딩해야 하는 이유와 시기는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!