죄송합니다. 첫 번째 답변 (유용한 / 추가적인 컨텍스트를 제공하는 동안)이 귀하의 질문에 답변하지 않는다는 것을 깨달았습니다. 다시 해보겠습니다.
물어:
나는 확신하고 싶다 { component: Component, ...rest }
의미는 다음과 같습니다.
에서 props
의 얻을 Component
다른 모든 다음 소품을하고 props
당신에게 주어지고, 이름 바꾸기 props
에 rest
당신이 문제를 명명 피할 수 있도록
props
라우트로 전달 render
기능
귀하의 해석이 정확하지 않습니다. 하지만 당신의 생각에 따르면, 여기에서 일어나는 일이 일종의 객체 파괴 에 해당한다는 사실을 적어도 알고있는 것 같습니다. (더 자세한 설명은 두 번째 답변 및 주석 참조).
정확한 설명을 제공하기 위해 { component: Component, ...rest }
표현식을 두 개의 개별 작업으로 나눕니다.
- 작업 1 :
component
정의 된 속성 찾기 props
( 참고 : 소문자 C creationComplete 컴퍼넌트) 우리가 부르는 상태에서 새 위치를 지정 Component
( 참고 : 자본 C creationComplete 컴퍼넌트).
- 작업 2 : 그런 다음 개체에 정의 된 나머지 속성 을 모두
props
가져와라는 인수 내에서 수집합니다 rest
.
중요한 점은 이름을 바꾸지 않는다는 것입니다. props
을 rest
. (또한 " props
Route render
함수에 전달 된 이름 지정 문제를 피하려는 시도와도 관련이 없습니다 .)
rest === props;
당신은 단순히 당기고 있습니다 나머지 사용자에 정의 된 속성의 (인수가 있음을 이름 때문에 이유) props
라고하는 새로운 인자로 객체를 rest
.
사용 예
여기에 예가 있습니다. 다음과 같이 정의 된`myObj` 객체가 있다고 가정합니다.
const myObj = {
name: 'John Doe',
age: 35,
sex: 'M',
dob: new Date(1990, 1, 1)
};
이 예에서는 다음과 props
같이 동일한 구조 ( 즉 , 속성 및 값)를 갖는 것으로 생각하면 도움이 될 수 있습니다 .myObj
. 이제 다음 과제를 작성해 봅시다.
const { name: Username, ...rest } = myObj
위의 진술은 선언 과 은 두 변수 (또는 상수) 할당 에 해당합니다. 진술은 다음과 같이 생각할 수 있습니다.
name
정의 된 속성을 가져 와서 myObj
우리가 호출하는 새 변수에 그 값을 할당합니다 Username
. 그런 다음 정의 된 다른 속성 myObj
( 예 : age
, sex
및 dob
)을 가져 와서 이름을 지정한 변수에 할당 된 새 개체로 수집합니다 rest
.
로깅 Username
및 rest
에이를 console
확인합니다. 우리는 다음을 가지고 있습니다 :
console.log(Username);
console.log(rest);
사이드 노트
다음과 같은 질문이있을 수 있습니다.
대문자 "C" component
로 이름을 변경하기 위해 재산 을 떼어내는 수고를 겪는 이유는 무엇 Component
입니까?
예, 꽤 사소한 것 같습니다. 그리고 이것이 표준 React 관행이지만 프레임 워크에 대한 Facebook의 모든 문서 가 그렇게 작성된 이유 가 있습니다. 즉, JSX로 렌더링 된 사용자 지정 구성 요소를 자본화하는 것은 그 자체로 필요한 것보다 관행이 적습니다. React 또는 더 적절하게 JSX는 대소 문자를 구분 합니다. 대문자로 된 첫 글자없이 삽입 된 사용자 지정 구성 요소는 DOM에 렌더링되지 않습니다. 이것은 React가 커스텀 컴포넌트를 식별하기 위해 스스로 정의한 방식입니다. 따라서, 추가로 이름을 변경하지 않는 예를했다 component
떨어져 당겨졌다 재산 props
에 대한을 Component
의 <component {...props} />
표현은 적절하게 렌더링하기 위해 실패합니다.