일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Zustand
- 패스트캠퍼스
- frontend
- 클래스
- 프론트엔드
- OOP
- 불변성
- 추상화
- JavaScript
- 상속
- 캡슐화
- 타입스크립트
- 부트캠프
- 자바스트립트
- 노마드코더
- 웹개발
- webdevelopment
- 논리연산자
- Fetch
- Hooks
- CSS
- github
- 투두앱만들기
- REACT
- 자바스크립트
- 리액트
- typeScript
- js
- 객체지향프로그래밍
- Props
Archives
- Today
- Total
connecting dots
Beginner 8회차 2 (8/6) | 양방향 데이터 바인딩과 단방향 데이터 바인딩 예제로 이해하기, Todo 항목 추가하기 실습 본문
Live Class/Beginner
Beginner 8회차 2 (8/6) | 양방향 데이터 바인딩과 단방향 데이터 바인딩 예제로 이해하기, Todo 항목 추가하기 실습
dearsuhyun 2024. 8. 6. 18:50양방향 데이터 바인딩과 단방향 데이터 바인딩 예제로 이해하기
Q.
강사님! title={title}와 같은 반응형 데이터는 부모에서 자식 컴포넌트로 속성을 전달할 때 쓰는 단방향 데이터 전달이고
저희가 방금 배운 value={title}처럼 쓰는 건 폼 요소에서 요소의 상태를 제어할 때 사용하는 양방향 데이터 전달이라고 이해했는데 맞을까요?
A.
Todo 항목 추가 기능 구현하기
App.tsx
// App.tsx
// todo목록 새로 가지고 오는 함수 내려줌
import TodoCreator from './components/TodoCreator'
<TodoCreator getTodos={getTodos} />
todoCreator.tsx
body에 꼭 들어가야 하는 것이 있는지 API 명세서 확인
--> title 필수 !
보낸 데이터와 응답받은 데이터 확인해보기 |
payload: 전송한 데이터를 볼 수 있음 preview: 서버가 준 데이터(응답받은 데이터)를 볼 수 있음 |
기능 구현 완료
전체 코드
// App.tsx
// todo목록 새로 가지고 오는 함수 내려줌
import TodoCreator from './components/TodoCreator'
<TodoCreator getTodos={getTodos} />
// Todocreator.tsx
import { useState } from 'react'
export default function TodoCreator({ getTodos }: { getTodos: () => void }) {
const [title, setTitle] = useState('')
function onKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {
if (event.key === 'Enter') {
console.log('title:', title)
createTodo()
}
}
async function createTodo() {
await fetch(
`https://asia-northeast3-heropy-api.cloudfunctions.net/api/todos`, // todos/도 가능
{
method: 'POST', // 생성
headers: {
'content-type': 'application/json',
apikey: 'KDT9_AHMq2s7n',
username: 'FE1_ParkSuHyun'
},
body: JSON.stringify({
title // title: title
})
}
)
getTodos()
}
return (
<div>
<input
value={title}
onChange={e => setTitle(e.target.value)}
onKeyDown={onKeyDown}
placeholder="새로운 할 일을 작성하세요"
/>
</div>
)
}
반응형