React 에서 refs 의 일반적인 용법 집합
Refs 는 DOM 노드 나 render 방법 에서 만 든 React 요 소 를 방문 할 수 있 는 방식 을 제공 합 니 다.
Ref 리 트 윗 은 ref 를 구성 요 소 를 통 해 하위 구성 요소 에 자동 으로 전달 하 는 기술 입 니 다.보통 DOM 노드 나 React 요소 의 인 스 턴 스 를 가 져 오 는 도구 입 니 다.React 에서 Refs 는 dom 노드 나 render 방법 에서 만 든 React 요 소 를 방문 할 수 있 는 방식 을 제공 합 니 다.
Refs 리 트 윗
Ref 리 트 윗 은 일부 구성 요소 가 ref 를 받 아들 이 고 하위 구성 요소 에 전달 할 수 있 도록 선택 할 수 있 는 기능 입 니 다.
기본적으로 함수 구성 요소 에 ref 속성 을 사용 할 수 없습니다.인 스 턴 스 가 없 기 때 문 입 니 다.
1.String 형식의 Refs
string 형식의 refs문제 가 좀 있다때문에 사용 하 는 것 을 권장 하지 않 습 니 다.그것 은 이미 유행 이 지 났 고 미래의 버 전에 서 제 거 될 수도 있다.
import React from "react";
//
export default class StringRef extends React.PureComponent {
componentDidMount() {
console.log("stringRefDom:", this.refs.stringRefDom);
console.log("stringRefComp:", this.refs.stringRefComp);
}
render() {
return (
<div>
{/* */}
<div ref={"stringRefDom"}>stringRefDom</div>
{/* */}
<StringRefComp ref={"stringRefComp"} />
</div>
);
}
}
//
class StringRefComp extends React.PureComponent {
render() {
return <div>StringRefComp</div>;
}
}
2.리 턴 Refs
import React from "react";
//
export default class CallbackRef extends React.PureComponent {
constructor(props) {
super(props);
this.callbackRefDom = null;
this.callbackRefComp = null;
}
componentDidMount() {
console.log("callbackRefDom:", this.callbackRefDom);
console.log("callbackRefComp:", this.callbackRefComp);
}
//
setCallbackRefDom = (ref) => {
this.callbackRefDom = ref;
};
setCallbackRefComp = (ref) => {
this.callbackRefComp = ref;
};
//
render() {
return (
<div>
<div ref={this.setCallbackRefDom}>callbackRefDom</div>
<CallbackRefComp ref={this.setCallbackRefComp} />
</div>
);
}
}
//
class CallbackRefComp extends React.PureComponent {
render() {
return <div>callbackRefComp</div>;
}
}
3.React.createRef()
import React from "react";
//
export default class CreateRef extends React.PureComponent {
constructor(props) {
super(props);
this.createRefDom = React.createRef();
this.createRefComp = React.createRef();
}
componentDidMount() {
console.log("createRefDom:", this.createRefDom.current);
console.log("createRefComp:", this.createRefComp.current);
}
render() {
return (
<div>
<div ref={this.createRefDom}>createRefDom</div>
<CreateRefComp ref={this.createRefComp} />
</div>
);
}
}
//
class CreateRefComp extends React.PureComponent {
render() {
return <div>CreateRefComp</div>;
}
}
4.useRef
import React, { useEffect } from "react";
//
const UseRef = React.memo(() => {
// //
// const createRefDom = React.createRef();
// const createRefComp = React.createRef();
const createRefDom = React.useRef();
const createRefComp = React.useRef();
useEffect(() => {
console.log("useRefDom:", createRefDom.current);
console.log("useRefComp:", createRefComp.current);
}, []);
return (
<div>
<div ref={createRefDom}>useRefDom</div>
<UseRefComp ref={createRefComp} />
</div>
);
});
export default UseRef;
//
class UseRefComp extends React.PureComponent {
render() {
return <div>useRefComp</div>;
}
}
5.Refs 와 함수 구성 요소
import React, { useEffect, useImperativeHandle } from "react";
//
const ForwardRef = React.memo(() => {
const createRefComp = React.useRef();
const createRefCompMethod = React.useRef();
useEffect(() => {
console.log("useRefComp:", createRefComp.current);
console.log("createRefCompMethod:", createRefCompMethod.current);
createRefComp.current.reload();
}, []);
return (
<div>
<ForwardRefFunc ref={createRefComp} />
</div>
);
});
export default ForwardRef;
const RefFunc = React.forwardRef((props, ref) => {
const [name, setName] = React.useState(null);
const reload = () => {
console.log("reload");
setTimeout(() => {
setName("ForwardRefFunc");
}, 3000);
};
//useImperativeHandle ref
useImperativeHandle(ref, () => {
return {
reload: reload,
};
});
return <div ref={ref}>ForwardRefFunc {name}</div>;
});
const ForwardRefFunc = React.memo(RefFunc);
forward Ref 와 useImperative Handle 의 최종 목적 은 ref 에 호출 가능 한 대상 을 제공 하 는 것 입 니 다!React 에서 refs 의 흔 한 용법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 React 에서 refs 용법 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 에서 사이트 아이콘 표시 설정전단 개발 환경: react:^16.4.1 webpack:^4.16.0 웹 팩 에 favicon. ico 설정 추가: nginx 는 ico 에 대한 지원 을 추가 합 니 다:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.