반응 - 키의 숨겨진 기능
3553 단어 reactprogrammingjavascriptwebdev
keys
를 통과해야 한다는 것을 알고 있습니까?그래서 당신은 생각합니다: 왜 그냥
key
모든 것이 아닌가? 더 좋은 점은… 무작위로 만들지 않는 이유는 무엇입니까?열쇠!
매핑하는 목록 외에는 키가 기능이 없다고 생각할 수 있습니다. 결국 전부는 아니지만 대부분의 자습서에서는 목록 매핑의 맥락에서만 키를 언급합니다.
당신이 나와 같다면 아마도
key
목록만, 가끔 잊어버리고 경고를 보고 키를 추가할 것입니다.그러나 일부 사람들은 다른 방향으로 이동하여 모든 곳에서
key
를 사용하기 시작합니다! 때때로 Math.random()
또는 new Date().getTime()
와 같은 임의의 것을 사용합니다."이상하지만 괜찮습니다 ..."라고 생각할 수 있지만 그렇지 않습니다! 옳지 않으며 디버깅이 불가능한 버그로 끝날 수 있습니다(실제 React 코드를 디버깅하는 구멍으로 내려가지 않는 한).
키에 대해 알아야 할 사항
서로 다른 수준에 있는 한 동일한 키를 가질 수 있습니다(동일한 구성 요소에서도!).
function ThisIsOk(){
return (
<div key="this is ok!">
<AnyComponent key="this is ok!" />
<div> {/* here wouldn't be ok */}
<AnotherComponent key="this is ok!" />
</div>
</div>
)
}
이것은 음… 나무 때문에 발생합니다!
React가 렌더링하는 방법을 보면 기본적으로 하나의 큰 구성 요소 트리라는 것을 알 수 있습니다(또한 이것이 래퍼 없이 여러 구성 요소를 반환하는 구성 요소를 가질 수 없는 이유입니다).
React는 모든 구성 요소를 선택하고 목록을 만들고 여기에 키를 입력하면 몇 가지 일이 발생합니다.
예:
여기에 작은 샌드박스가 있습니다. 가능하면 입력을 사용해 보세요.
https://codesandbox.io/s/keys-example-ll5rxg?file=/src/App.js
구성 요소를 다시 렌더링해야 할 때마다 다른 키를 찾기 때문에 임의의 항목이 있는 구성 요소가 각 렌더링에서 파괴되고 있습니다. 직접적이든 간접적이든.
그런 다음 키가 없거나 정적 키가 있는 키가 있습니다. 또한 키는 같지만 수준이 다른 것입니다.
마지막으로 이상한 점은 동일한 키를 가진 두 개의 구성 요소가 번갈아 렌더링되는 것입니다. 동일한 키, 동일한 위치이므로 기본적으로 동일한 구성 요소이고 상태가 지속된다고 말하는 것입니다!
이것은 무엇을 의미 하는가?
무슨 일이 있어도 구성 요소를 재설정할 수 없는 버그가 발생하여 상태를 재설정하기 위해 약간의 종속성과 함께
useEffect
를 사용하기 시작했습니다. 음, 혼자가 아닙니다!하지만 이제... 그 이유를 알고 있으며 상태를 재설정하기 위해 다른 키를 전달해야 한다는 것도 알고 있습니다. 아니오
useEffect
가 필요합니다!또한 동일한 위치에서 동일한 구성 요소를 렌더링할 수 있고 이전 상태를 유지한다는 것도 알고 있습니다. 이것을 어디에 활용할지 잘 모르겠지만. 그 예도…
표지 사진 작성자: Samantha Lam on Unsplash
Reference
이 문제에 관하여(반응 - 키의 숨겨진 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/noriller/react-the-hidden-function-for-keys-29a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)