렌더링 메소드에서 인라인 화살표 함수 피하기
this._handleChange.bind(this)와 같은 인라인 화살표 함수는 피하는 것이 좋습니다. React 컴포넌트의 render 메소드.
이유:
다시 렌더링하는 동안 React는 이전 메서드를 재사용하는 대신 새 메서드를 생성합니다. 이는 불필요한 함수 생성 및 메모리 할당을 유발하여 성능에 부정적인 영향을 미칠 수 있습니다.
대안:
렌더링 메서드 내에서 화살표 함수 바인딩을 우회하는 방법에는 여러 가지가 있습니다.
1. 생성자 바인딩:
예:
class MyClass extends React.Component { constructor(props) { super(props); this._handleChange = this._handleChange.bind(this); } _handleChange() { // ... } render() { return <input onChange={this._handleChange} />; } }
2. 속성 초기화 구문:
예:
class MyClass extends React.Component { _handleChange = () => { // ... }; render() { return <input onChange={this._handleChange} />; } }
3. 콜백 함수를 사용한 이벤트 처리:
예:
class MyClass extends React.Component { handleDeleteTodo = (todo) => { // ... }; render() { return todos.map((todo) => ( <div key={todo}> <input onChange={this.handleDeleteTodo.bind(this, todo)}> {todo} </div> )); } }
4. 구성 요소 범위 화살표 함수:
예:
class MyClass extends React.Component { _handleDeleteTodo = (todo) => { // ... }; render() { return todos.map((todo) => ( <div key={todo} onClick={this._handleDeleteTodo.bind(this, todo)}> {todo} </div> )); } }
5. 외부 이벤트 핸들러:
예:
const handleDeleteTodo = (todo) => { // ... }; class MyClass extends React.Component { render() { return todos.map((todo) => ( <MyComponent todo={todo} onDelete={handleDeleteTodo} /> )); } } class MyComponent extends React.Component { render() { return <div onClick={this.props.onDelete.bind(this, this.props.todo)}>{this.props.todo}</div>; } }
이러한 대안은 성능을 저하하거나 불필요한 함수 바인딩을 도입하지 않고 React 구성 요소 내에서 이벤트를 처리하는 효율적인 방법을 제공합니다.
위 내용은 React Render 메서드에서 인라인 화살표 함수를 피해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!