그리고 OOP/C# 사람이 React Hooks 뒤에 있는 메커니즘을 이해하려고 해요.
                                            
                                                
                                                
                                                
                                                
                                                
                                                 9062 단어  reacthooksjavascript
                    
React 갈고리의 단순성 뒤에 있는 마력은 무엇입니까?
OOP/MVVM/C#의 배경에서부터 반응을 하기 시작했는데 한동안 리액트 훅스에 대해'장면 뒤의 작업 원리'증후군이 생겼어요.
간단하고 무상태로 보이는 자바스크립트 함수에서 호출될 때 갈고리는 상태를 유지합니다.
특히 같은 함수 구성 요소에 같은 종류의 갈고리가 공존하는 방법과 여러 렌더링에서 상태를 유지하는 방법에 대해 설명합니다.
예를 들어, 다음 함수
MyComponent의 여러 호출에서function MyComponent() {
  const refUp = useRef(0);
  const refDown = useRef(0);
  const [countUp, setCountUp] = useState(0);
  const [countDown, setCountDown] = useState(0);
  const clicked = () => {
    setCountUp(count => count + 1);    
    setCountDown(count => count - 1);    
  };
  console.log("rendering");
  return (
    <p>
      <span>Up: {refUp.current++}</span><br/>
      <span>Down: {refDown.current--}</span><br/>
      <span>Counts: {countUp}, {countDown}</span><br/>
      <button onClick={clicked}>Count</button>
    </p>
  );
}
refA.current와refB.current 어떻게 자바스크립트this 같은 것에 의존하지 않는 상황에서 변이가 발생하고 여러 개의 렌더링에 여전히 존재하며 그들의 값을 유지할 수 있습니까?특히 두 개의 같은 호출
useRef(0)을 통해 만들어진 것을 감안하면?나의 직감은 나에게 유일한 명칭 매개 변수, 예를 들면 useRef(0, "refA")가 있어야 한다고 말했지만, 실제로는 없었다.같은 문제도 이러한 변수를 초기화하는
countUp,countDown와 상응하는 useState(0) 호출에 적용된다.try it in the CodePen
반드시 어떤 것이 우리의 상태를 유지해야 한다.
모든 갈고리는 반드시 어떤 1:1의 반사가 있어야만 그 상태로 들어갈 수 있다.
그것이 움직일 때 마법이 없다.요컨대, 다음은 내가 그것에 대한 이해이다.
MyComponent와 같은 모든 구성 요소는 React의 정적 상태에서 하나의 전용 항목을 가지고 이 항목은 렌더링 사이에서 구성 요소가 사용하는 모든 갈고리의 상태를 유지한다.useRef를 호출할 때 React는 호출된 구성 요소 (현재 렌더링 중인 구성 요소) 를 알고 있기 때문에 React는 이전에 비추고 정적 속에 저장된 단일 구성 요소의 상태 항목을 검색할 수 있습니다.이것은 각 구성 요소의 갈고리useRef와 useState의 현재 값을 저장하는 곳이다.useRef나 useState 등 호출의 정확한 순서는 매우 중요하기 때문에 후속 렌더링에서는 변하지 않아야 한다.우리의 예에서 React는 처음에 useRef에 내부 상태MyComponent의 두 항목을 만들고 useState에 두 항목을 만들었다.MyComponent))될 때 React는 정확한 상태에 접근하는 방법을 알고 각useRef 또는 useState의 호출 순서에 따라 어떤 값을 되돌려줍니다.따라서, 만약 우리가 여러 개의 렌더링 중에 이 순서를 어지럽힌다면, 우리의 상태는 원시 인덱스가 정확하지 않기 때문에 파괴될 것이다.예를 들어 아래의 허구의 예는 곧
refUp와 refDown의 상태를 어지럽힐 수 있다. 왜냐하면 그들의 useRef 호출 순서가 일치하지 않기 때문이다.
 // don't mess up the order of hooks like this:
 let refUp;
 let refDown;
 if (Date.now() & 1) {
   refUp = useRef(0);
   refDown = useRef(0);
 } 
 else {
   refDown = useRef(0);
   refUp = useRef(0);
 }
render() 방법을 지원할 수 있지만 React의 이념은 상태를 클래스this.state에 보존하고 클래스 구성 요소를 업데이트하는 것이다.다음 자료는 이러한 갈고리 메커니즘을 이해하는 데 큰 도움을 주었다.
Reference
이 문제에 관하여(그리고 OOP/C# 사람이 React Hooks 뒤에 있는 메커니즘을 이해하려고 해요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/noseratio/yet-another-oop-c-person-me-trying-to-understand-react-hooks-4aik텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)