React — 올바른 방식으로 핸들러의 사용자 정의 매개변수에 액세스
8011 단어 reactwebdevtutorialjavascript
React는 여러 측면에서 훌륭하며 우리가 덜 독단적(또는 비독점적)되어 다양한 방식으로 작업을 수행할 수 있는 자유를 제공합니다.
최근, 특히 후크가 출시된 후 커뮤니티는 참조 평등과 렌더의 익명 화살표 기능이 성능에 좋지 않은 방식에 대해 많은 소란을 피우고 있습니다.
렌더링 중에 화살표 기능을 사용하는 이유와 방법이 성능에 영향을 미치는지(또는 그렇지 않은지)에 대해 자세히 알아보지 않을 것입니다. 다음은 컨텍스트에 대한 두 개의 대조되는 트윗입니다.
shawn swyx 왕 🌟
TFW 당신은 "하지만 렌더에서 함수를 만드는 것은 반패턴입니다"라는 군중이 여전히 옳지만 그들은 이유를 모른다는 것을 알고 있습니다.
오후 23:44 - 2019년 5월 23일
켄트 C. 도즈
중지하십시오! 인라인 함수는 당신의 병목이 아닙니다! twitter.com/ferdaber/statu…
오후 15:48 - 2019년 6월 4일
Ferdy Budhidharma
나는 거짓말을 하지 않을 것입니다. 많은 FUD가 있었고 누군가가 내 화살표 기능을 인라인했기 때문에 누군가 나에게서 포인트를 떨어뜨릴 수 있기 때문에 React 관련 인터뷰 테스트나 질문이 걱정됩니다.
언제
우리는 대부분 렌더링 중에 화살표 함수를 사용하여 사용자 정의 매개변수를 이벤트 핸들러에 전달합니다.
예를 들어, 이것은 일반적인 사용 사례입니다.
const MyComp = () => {
const handleClick = (e, id) => {
// handle click and use id to update state
}
// id comes from state
return (
<div onClick={(e) => handleClick(e, id)}>Hello World!</div>
)
}
어떻게
여기서 익명의 화살표 기능을 사용하는 대신 데이터 속성을 활용하고 이벤트 개체의 값에 액세스할 수 있습니다.
const MyComp = () => {
const handleClick = (e) => {
const id = e.target.dataset.id
// handle click and use id to update state
}
// id comes from state
return (
<div data-id={id} onClick={handleClick}>Hello World!</div>
)
}
장점
이 접근 방식에는 많은 이점이 있습니다.
const MyComp = () => {
const handleClick = (e, id) => {
// handle click and use id to update state
}
// id comes from state
return (
<div onClick={(e) => handleClick(e, id)}>Hello World!</div>
)
}
여기서 익명의 화살표 기능을 사용하는 대신 데이터 속성을 활용하고 이벤트 개체의 값에 액세스할 수 있습니다.
const MyComp = () => {
const handleClick = (e) => {
const id = e.target.dataset.id
// handle click and use id to update state
}
// id comes from state
return (
<div data-id={id} onClick={handleClick}>Hello World!</div>
)
}
장점
이 접근 방식에는 많은 이점이 있습니다.
const MyComp = () => {
// id comes from state
const handleClick = React.useCallback((e) => {
const id = e.target.dataset.id
// handle click and use id to update state
}, [id])
return (
<div data-id={id} onClick={handleClick}>Hello World!</div>
)
}
다른 기본 유형을 전달하더라도 모든 데이터 속성은 문자열 값을 반환한다는 점에 유의하세요. 따라서 데이터 세트에서 추출하는 동안 값을 강제하는 것이 좋습니다.
const id = e.target.dataset.id // this will be String
const id = Number(e.target.dataset.id) // convert to type if needed
어떻게 작동하는지 보여주기 위해 codesandbox를 만들었습니다 — Custom Params In Handlers
진짜 대단한데! 좋은 하루 되세요! ⚡️
Reference
이 문제에 관하여(React — 올바른 방식으로 핸들러의 사용자 정의 매개변수에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/flexdinesh/react-access-custom-params-in-handlers-the-right-way-44mi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)