반응형
전달 인수에 대한 반응 후크에서 클릭 이벤트에 대한 구문
React class 구성 요소에서 이는 항상 나에게 큰 도움이 되었다.
let myValue: string = "Hello World";
<Button onClick={this.handleClick.bind(this, myValue)}></Button>
나는 React Hooks 문서에서 이 구문을 찾았고 나는 그것을 좋아하지만 그것이 항상 값을 되돌려주지는 않는다.
<Button onClick={handleClick} value={myValue}></Button>
이 구문은 작동하지만 타이핑이 어렵고 지저분해 보인다.
<Button onClick={() => handleClick(myValue)}></Button>
이것은 갈고리와 함께 작동하는 또 다른 방법이지만, 나에게는 진부한 것처럼 보인다.
<Button onClick={handleClick.bind(null, myValue)}></Button>
나는 너무 많은 선택으로 혼란스러워.이것을 하는 가장 좋은 방법만 있지 않은가?
이 방법은 다음과 같다.
<Button onClick={() => handleClick(myValue)}></Button>
유일한 단점은 다음과 같다.onClick
프로펠러는 각 렌더에 새로운 값을 가지며 순수하더라도 하위 구성요소의 재조정을 유발한다.이는 특정 구성 요소에 따라 성능 문제를 일으킬 수도 있고 그렇지 않을 수도 있다. 이는 많은 경우 문제가 될 수 있다.Button
인스턴스나 리렌더는 비싸다.
값이 정적인 경우 콜백을 구성 요소 외부의 상수 기능으로 정의할 수 있다.
// outside function component
const myValue = "Hello World";
const myHandleClick = () => handleClick(myValue);
...
// inside function component
<Button onClick={myHandleClick}></Button>
값이 동적이고 구성 요소 내에서만 사용할 수 있는 경우, 구성 요소 내부에서 함수를 정의하고 다음 항목으로 메모할 수 있다.useMemo
또는useCallback
후크(이미 언급된 다른 대답):
// inside function component
const myHandleClick = useCallback(() => handleClick(myValue), [myValue]);
...
<Button onClick={myHandleClick}></Button>
질문의 첫 번째 버전과 마지막 버전은 모두 새로운 기능을 생성하므로 해당 기능을 제공하는 것만으로도 벗어날 수 있는지 여부handleClick
소품이라면 그렇게 해야 해
인수를 함수에 전달해야 하는 경우에도 함수 구성 요소에서 첫 번째 버전을 사용할 수 있지만, 그 이후부터this
사용하지 않고, 설정만 하면 된다.null
.
<Button onClick={handleClick.bind(null, myValue)}></Button>
반응형
'Programing' 카테고리의 다른 글
새 쿼리를 vue-roouter로 푸시할 때 탐색 중복됨 (0) | 2022.03.19 |
---|---|
형식 설명으로 대응: 속성 'push'가 유형 'History'에 없음 (0) | 2022.03.19 |
쓸모없는 반복 경로를 바꾸는 방법 (0) | 2022.03.19 |
순서에 상관없이 2개의 리스트가 동일한 요소를 가지고 있는지 결정하시겠습니까? (0) | 2022.03.19 |
개체와 같은 소품 기본값이 작동하지 않음 (0) | 2022.03.19 |