FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 메인프로젝트
  • HTML
  • 신입개발자
  • 원시타입
  • css
  • 타입스크립트
  • 자바스크립트
  • 코드스테이츠
  • 부트캠프
  • seb 39
  • 프론트엔드
  • 회고
  • 자바스크립트 딥다이브
  • 포트폴리오
  • Til
  • useMemo
  • ES6
  • 딥다이브
  • 리액트
  • seb39

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN
기록/Today I learned

22.10.26 TIL

기록/Today I learned

22.10.26 TIL

2022. 10. 26. 23:04
728x90

1. Done


1.1 포폴앱 성능최적화 계획잡기

별도 문서로 정리: https://handsome-parcel-51e.notion.site/1-1044e2798c5f49838dd87e39eb2640cc

2. 타입스크립트 - ref로 사용자 입력 받기 (state 양방향 바인딩 안 쓰는 경우)

const todoOnSubmit = (e: React.FormEvent) => {
    e.preventDefault();
  };

event 객체의 타입은 react.FormEvent 이다.

useRef

  1. useRef 호출
  2. ref 타입 할당 (HTMLInputElement)
  3. 초기값 null 할당 (useRef()가 jsx 리턴문보다 위에 있어 최초 렌더링 시 아직 jsx가 렌더링 되지 않았으므로)
  4. reference 값을 DOM 요소에 적용
  5. 이벤트 핸들러 정의
import React, { useRef } from 'react';

const AddTodo: React.FC = () => {
  const textInputRef = useRef<HTMLInputElement>(null);

  const todoOnSubmit = (e: React.FormEvent) => {
    e.preventDefault();
    const enteredText = textInputRef.current!.value;
  };

  return (
    <form onSubmit={todoOnSubmit}>
      <div>
        <label htmlFor="todo-text">
          <input type="text" id="todo-text" ref={textInputRef} />
        </label>
      </div>
      <button type="submit">할 일 추가</button>
    </form>
  );
};

export default AddTodo;

3. 타입스크립트 - useState 사용하기

제네릭 사용하기

  1. 별도 파일에 state의 인터페이스 정의
  2. useState 호출하면서 제네릭으로 타입을 넘겨주기
// todo.model.ts
export interface Todo {
  id: string;
  text: string;
}
// App.tsx
import React, { useState } from 'react';
import TodoList from './components/TodoList';
import AddTodo from './components/AddTodo';
import { Todo } from './todo.model';

const App: React.FC = () => {
  const [todos, setTodos] = useState<Todo[]>([]);

  const todoAddHandler = (text: string) => {
    setTodos(prev => [...todos, { id: Math.random().toString(), text }]);
  };

  return (
    <div className="App">
      <AddTodo onAddTodo={todoAddHandler} />
      <TodoList items={todos} />
    </div>
  );
};

export default App;
728x90
저작자표시 비영리 변경금지 (새창열림)

'기록 > Today I learned' 카테고리의 다른 글

22.11.10 목 TIL  (0) 2022.11.10
22.10.27 TIL - 포폴앱 타입스크립트 마이그레이션  (0) 2022.10.29
22.10.25 TIL  (0) 2022.10.25
22.10.24 TIL  (0) 2022.10.24
22.10.21 TIL  (0) 2022.10.21
  • 1. Done
  • 1.1 포폴앱 성능최적화 계획잡기
  • 2. 타입스크립트 - ref로 사용자 입력 받기 (state 양방향 바인딩 안 쓰는 경우)
  • 3. 타입스크립트 - useState 사용하기
'기록/Today I learned' 카테고리의 다른 글
  • 22.11.10 목 TIL
  • 22.10.27 TIL - 포폴앱 타입스크립트 마이그레이션
  • 22.10.25 TIL
  • 22.10.24 TIL
FE RYAN
FE RYAN

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.