https://www.udemy.com/course/best-react/
【한글자막】 React 완벽 가이드 with Redux, Next.js, TypeScript
Javascript부터 웹 어플리케이션 배포까지, React와 프론트엔드 최신 기술을 가장 쉽고 확실하게 배우는 법
www.udemy.com
이 게시물은 유데미 React 완벽 가이드 강의를 보고 메모를 남기는 게시물 입니다.
POST 요청 보내기
fetch API로 Firebase와 연결하였다.
주의할 점은 Firebase 주소/(name, 여기서는 movies).json() 으로 파싱을 해서 받아야한다.
GET 요청을 해보았기 때문에 딱히 특별한 점은 없고
데이터를 받을때는 GET으로, 데이터를 데이터베이스에 저장하고 싶을 때는 POST로 한다는 것만 숙지하자.
import React, { useState, useEffect, useCallback } from "react";
import MoviesList from "./components/MoviesList";
import AddMovie from "./components/AddMovie";
import "./App.css";
function App() {
const [movies, setMovies] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(null);
const fetchMoviesHandler = useCallback(async () => {
setIsLoading(true);
setError(null);
try {
const response = await fetch(
"https://react-http-83c25-default-rtdb.firebaseio.com/movies.json"
);
if (!response.ok) {
throw new Error("Something went wrong!");
}
const data = await response.json();
console.log(data);
const loadedMovies = [];
for (const key in data) {
loadedMovies.push({
id: key,
title: data[key].title,
openingText: data[key].openingText,
releaseDate: data[key].releaseDate,
});
}
setMovies(loadedMovies);
} catch (error) {
setError(error.message);
}
setIsLoading(false);
}, []);
useEffect(() => {
fetchMoviesHandler();
}, [fetchMoviesHandler]);
async function addMovieHandler(movie) {
const res = await fetch(
"https://react-http-83c25-default-rtdb.firebaseio.com/movies.json",
{
method: "POST",
body: JSON.stringify(movie),
headers: {
"Content-Type": "application/json",
},
}
);
const data = await res.json();
console.log(data);
}
let content = <p>Found no movies.</p>;
if (movies.length > 0) {
content = <MoviesList movies={movies} />;
}
if (error) {
content = <p>{error}</p>;
}
if (isLoading) {
content = <p>Loading...</p>;
}
return (
<React.Fragment>
<section>
<AddMovie onAddMovie={addMovieHandler} />
</section>
<section>
<button onClick={fetchMoviesHandler}>Fetch Movies</button>
</section>
<section>{content}</section>
</React.Fragment>
);
}
export default App;
'Study > Udemy-React-완벽 가이드' 카테고리의 다른 글
16. 양식 및 사용자 입력 작업 (feat. 유데미 React 완벽 가이드) (0) | 2022.06.12 |
---|---|
15. 커스텀 리액트 Hook 빌드 (feat. 유데미 React 완벽 가이드) (0) | 2022.06.12 |
14.3 HTTP 요청보내기: 요청에 useEffect() 사용하기 (feat. 유데미 React 완벽 가이드) (0) | 2022.06.06 |
14.2 HTTP 요청보내기: Http 오류 처리하기 (feat. 유데미 React 완벽 가이드) (0) | 2022.06.06 |
14.1 HTTP 요청보내기: async, await 사용하기 (feat. 유데미 React 완벽 가이드) (0) | 2022.06.06 |