Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- apple developer academy 후기
- ObservableObject
- ObservedObject
- 애플 아카데미 후기
- Swift 문법
- OS
- 애플 디벨로퍼 아카데미 후기
- 애플 디벨로퍼 아카데미
- 애플 디벨로퍼 아카데미 21주차 회고
- Swift 기능
- 제앱소
- SWIFT
- useReducer
- 데이터베이스 공부
- 치지직
- Apple Developer Academy @ POSTECH
- global soop
- 숭실대
- Swift 디자인패턴
- 앱 비교 프로젝트
- 네이버 부스트캠프
- swift문법
- 네이버 치지직
- iOS 개발 오류
- StateObject
- react
- sqoop
- 데이터베이스
- 소프트웨어분석및설계
- 운영체제
Archives
- Today
- Total
사과하는 제라스
5장. ref: DOM에 이름 달기 본문
목차
728x90
반응형
ref는 언제 쓸까...!?
-> DOM을 꼭 직접적으로 건드려야 할 때
DOM을 꼭 사용해야 하는 상황
1. 특정 input에 포커스에 주기
2. 스크롤 박스 조작하기
3. Canvas 요소에 그림 그리기
등등...
import React, { Component } from "react";
import "./ValidationSample.css";
class ValidationSample extends Component {
state = {
password: "",
clicked: false,
validated: false,
};
input = React.createRef();
handleChange = (e) => {
this.setState({
password: e.target.value,
});
};
handleButtonClick = () => {
this.setState({
clicked: true,
validated: this.state.password === "0000",
});
this.input.focus();
};
render() {
return (
<div>
<input
ref={(ref) => (this.input = ref)} //input을 ref로 등록해두고 다른 곳에서 접근이 가능하다.
type="password"
value={this.state.password}
onChange={this.handleChange}
className={
this.state.clicked
? this.state.validated
? "success"
: "failure"
: ""
}
/>
<button onClick={this.handleButtonClick}>검증하기</button>
</div>
);
}
}
export default ValidationSample;
<주의>
서로 다른 컴포넌트끼리 데이터를 교류할 때 ref를 사용하는 것은 잘못된 것이다.
-> 가능하긴 하지만, 그럴 경우 스파게티 코드가 되어버림.
-> Redux, Context API를 사용해서 해결함.
728x90
반응형
'코테이토 동아리 > [코테이토]React 스터디 5기' 카테고리의 다른 글
7장. 컴포넌트의 라이프사이클 메서드 (0) | 2023.01.27 |
---|---|
6장. 컴포넌트 반복 (0) | 2023.01.27 |
4장. 이벤트 핸들링 (0) | 2023.01.27 |
3장. 컴포넌트 (0) | 2023.01.16 |
2장. JSX (0) | 2023.01.16 |