ref 예제

메서드의 매개 변수 목록에서 사용할 경우 ref 키워드는 인수가 값이 아니라 참조로 전달된다는 것을 나타냅니다. ref 키워드는 형식 매개 변수를 변수여야 하는 인수의 별칭으로 만듭니다. 즉, 매개 변수에 대한 모든 작업은 인수에서 수행됩니다. 예를 들어, 호출자가 local 변수 식 또는 배열 요소 액세스 식을 전달하고 호출된 메서드가 ref 매개 변수가 참조하는 개체를 대체하는 경우 호출자의 local 변수 또는 배열 요소는 이제 새 개체를 참조합니다. 메서드가 반환됩니다. 클래스의 구성원은 참조, 인 또는 출력에 의해서만 다른 서명을 가질 수 없습니다. 형식의 두 멤버 간의 유일한 차이점은 그 중 하나에 ref 매개 변수가 있고 다른 하나는 out 또는 매개 변수가 있는 경우 컴파일러 오류가 발생합니다. 예를 들어 다음 코드는 컴파일되지 않습니다. 위의 예제를 관찰하는 경우 ref 키워드를 사용하여 변수 x의 참조를 변수 a in 곱하기 메서드에 전달합니다. 이 경우 변수 a에는 변수 x의 참조가 포함되어 있으므로 변수 a에 대한 변경 내용은 변수 x의 값에 영향을 미칩니다. 첫 번째 성향은 참조를 사용하여 앱에서 “일들이 일어나게”하는 것입니다. 이 경우 잠시 후 구성 요소 계층 구조에서 상태를 소유해야 하는 위치에 대해 더 중요하게 생각하십시오. 종종 해당 상태를 “소유”하는 적절한 장소가 계층 구조의 상위 수준에 있다는 것이 분명해집니다.

이 예제는 리프팅 상태 상승 가이드를 참조하십시오. 동일한 방법으로 참조로 값에 액세스할 수 있습니다. 경우에 따라 참조로 값에 액세스하면 비용이 많이 드는 복사 작업을 방지하여 성능이 향상됩니다. 예를 들어 다음 문은 값을 참조하는 데 사용되는 ref 로컬 값을 정의하는 방법을 보여 주며 있습니다. 아래 예제는 React 16.3에 도입된 React.createRef() API를 사용하도록 업데이트되었습니다. React의 이전 릴리스를 사용하는 경우 콜백 참조를 대신 사용하는 것이 좋습니다. ref 매개 변수를 사용하려면 메서드 정의와 calling 메서드 모두 다음 예제와 같이 ref 키워드를 명시적으로 사용해야 합니다. 호출자는 GetBookByTitle 메서드에서 반환하는 값을 ref local으로 저장하면 다음 예제와 같이 호출자의 반환 값에 대한 변경 내용이 BookCollection 개체에 반영됩니다.

그러나 한 메서드에 ref, in 또는 out 매개 변수가 있고 다른 메서드에 다음 예제와 같이 값 매개 변수가 있는 경우 메서드가 오버로드될 수 있습니다. 두 예제 에서 ref 키워드를 두 위치에서 모두 사용 해야 합니다 또는 컴파일러 오류 CS8172를 생성 합니다. 위의 예에서 부모는 ref 콜백을 입력 Ref 프로구로 사용자 지정TextInput에 전달하고 사용자 지정TextInput은 특수 참조 특성과 동일한 함수를 전달합니다. 결과적으로 이.input모의 요소는 사용자 정의 텍스트 입력의 요소에 해당하는 DOM 노드로 설정됩니다. 위의 예에서 bob이 말하는 것의 값을 얻는 경우 이벤트 e . 참조를 사용하면 이전 예제에서 참조로 값 형식을 전달할 수 있습니다. 참조 키워드를 사용하여 참조 형식을 참조로 전달할 수도 있습니다. 참조 형식을 참조로 전달하면 호출된 메서드가 참조 매개 변수가 호출자에서 참조하는 개체를 대체할 수 있습니다. 개체의 저장소 위치는 참조 매개 변수의 값으로 메서드에 전달됩니다. 매개 변수의 저장소 위치에서 값을 변경하면(새 개체를 가리키기 위해) 호출인이 참조하는 저장소 위치도 변경합니다. 다음 예제는 참조 형식의 인스턴스를 참조 매개 변수로 전달합니다.

React 16.3 이상을 사용하는 경우 이러한 경우 참조 전달을 사용하는 것이 좋습니다.