SlideShare a Scribd company logo
ref101
임광규
2020.ReactJS 1
ref는언제사용할까?
DOM을꼭직접적으로접근할때입니다.
언제직접접근하나요?
특정input에포커스주기
스크롤박스조작하기
Canvas요소에그림그리기등
2020.ReactJS 2
id로접근하면안되요?
리액트에서도id를사용할수있습니다.JSX안에서DOM에id를할당하면랜더링될때그대로
전달됩니다.하지만특수한경우가아니면권장하지않습니다.
HTMLDOM의id는유일(unique)해야하는데,여러컴포넌트를사용하면중복id를가진DOM이생
겨날수있습니다.
하지만ref는전역적으로동작하지않고컴포넌트내부에서만동작하기때문에이런문제가생기지않
습니다.
2020.ReactJS 3
ref사용
useRef 를이용해서생성후DOM에ref에할당처리
import React from 'react';
export default function App() {
const nameRef = React.useRef();
return (
<div className="App">
<input type="text" ref={nameRef} />
<button onClick={e=>{
nameRef.current.focus();
}}>Input Focus</button>
</div>
);
2020.ReactJS 4
주의할점!
컴포넌트내부에서DOM에직접접근시ref를사용합니다.
하지만컴포넌트끼리데이터를교류할때ref를사용하면안됩니다!
리액트사상에어긋난설계이며,앱규모가커지면스파게티처럼데이터고꼬여버려서유지보수
가어려워집니다.
컴포넌트간데이터교류는언제나데이터를부모<->자식흐름으로교류해야합니다.
2020.ReactJS 5

More Related Content

What's hot

Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
ChangHyeon Bae
 
Java Script 2 Part.1
Java Script 2 Part.1Java Script 2 Part.1
Java Script 2 Part.1vicki0x
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API
NAVER D2
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
영석 양
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발
WebFrameworks
 
Javascript 생태계
Javascript 생태계Javascript 생태계
Javascript 생태계
Herren
 
Deploying serverless node.js microservices
Deploying serverless node.js microservicesDeploying serverless node.js microservices
Deploying serverless node.js microservices
Harrison Jung
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
sung ki choi
 

What's hot (9)

Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
 
Java Script 2 Part.1
Java Script 2 Part.1Java Script 2 Part.1
Java Script 2 Part.1
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - java OOM, Reference API
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
 
Nodejs를 이용한 개발
Nodejs를 이용한 개발Nodejs를 이용한 개발
Nodejs를 이용한 개발
 
Javascript 생태계
Javascript 생태계Javascript 생태계
Javascript 생태계
 
Deploying serverless node.js microservices
Deploying serverless node.js microservicesDeploying serverless node.js microservices
Deploying serverless node.js microservices
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 

More from Daniel Lim

내가 생각하는 개발자란?
내가 생각하는 개발자란?내가 생각하는 개발자란?
내가 생각하는 개발자란?
Daniel Lim
 
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
Daniel Lim
 
스크럼 101
스크럼 101스크럼 101
스크럼 101
Daniel Lim
 
nodejs_101.pdf
nodejs_101.pdfnodejs_101.pdf
nodejs_101.pdf
Daniel Lim
 
For You
For YouFor You
For You
Daniel Lim
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
Daniel Lim
 
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템
Daniel Lim
 
13.code split
13.code split13.code split
13.code split
Daniel Lim
 
12.context api
12.context api12.context api
12.context api
Daniel Lim
 
11.react router dom
11.react router dom11.react router dom
11.react router dom
Daniel Lim
 
9.component style
9.component style9.component style
9.component style
Daniel Lim
 
7.component life cycle
7.component life cycle7.component life cycle
7.component life cycle
Daniel Lim
 
8.hooks
8.hooks8.hooks
8.hooks
Daniel Lim
 
6.component repeat
6.component repeat6.component repeat
6.component repeat
Daniel Lim
 
4.event handling
4.event handling4.event handling
4.event handling
Daniel Lim
 
3.component 101
3.component 1013.component 101
3.component 101
Daniel Lim
 
2.jsx 101
2.jsx 1012.jsx 101
2.jsx 101
Daniel Lim
 
1.react 101
1.react 1011.react 101
1.react 101
Daniel Lim
 
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJSSwagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
Daniel Lim
 
CuKu V1.3
CuKu V1.3CuKu V1.3
CuKu V1.3
Daniel Lim
 

More from Daniel Lim (20)

내가 생각하는 개발자란?
내가 생각하는 개발자란?내가 생각하는 개발자란?
내가 생각하는 개발자란?
 
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
 
스크럼 101
스크럼 101스크럼 101
스크럼 101
 
nodejs_101.pdf
nodejs_101.pdfnodejs_101.pdf
nodejs_101.pdf
 
For You
For YouFor You
For You
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템
 
13.code split
13.code split13.code split
13.code split
 
12.context api
12.context api12.context api
12.context api
 
11.react router dom
11.react router dom11.react router dom
11.react router dom
 
9.component style
9.component style9.component style
9.component style
 
7.component life cycle
7.component life cycle7.component life cycle
7.component life cycle
 
8.hooks
8.hooks8.hooks
8.hooks
 
6.component repeat
6.component repeat6.component repeat
6.component repeat
 
4.event handling
4.event handling4.event handling
4.event handling
 
3.component 101
3.component 1013.component 101
3.component 101
 
2.jsx 101
2.jsx 1012.jsx 101
2.jsx 101
 
1.react 101
1.react 1011.react 101
1.react 101
 
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJSSwagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
 
CuKu V1.3
CuKu V1.3CuKu V1.3
CuKu V1.3
 

5.ref 101