[React] ํ๋ก์ ํธ GitHub Pages ๋ฐฐํฌํ๊ธฐ + Axios ๋ฅผํตํด json data ๊ฐ์ ธ์ค๊ธฐ
AXIOS
fetch์์ ์๋ ์์ layer
// asios ์ค์น
npm i axios
data fetchํ๊ธฐ
๋ณดํต Fetch ๋ฅผ ์ฌ์ฉํ์ฌ data๋ฅผ load ํ๋๋ง
asios๋ฅผ ์ฌ์ฉํด๋ณด์
class App extends React.Component{
state={
isLoading: true,
movies:[]
};
getMovies = async() =>{
const movies = await axios.get("https://yts-proxy.now.sh/list_movies.json");
console.log(movies);
};
componentDidMount(){
this.getMovies();
}
render(){
const {isLoading} = this.state;
return (
<div>
{isLoading? "Loading...":"We are ready"}
</div>
);
}
}
movies ์์ data ์์ data ์์ movies
const movies = await axios.get("https://yts-proxy.now.sh/list_movies.json");
console.log(movies.data.data.movies);
const {data:{data:{movies}}} = await axios.get("https://yts-proxy.now.sh/list_movies.json");
console.log(movies);
์ด์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ก setSate( { } ) ํ ํ ์ํ๋๋๋ก rendering ํ๊ธฐ
//๊ฐ์ ธ์จ data๋ก setState()
getMovies = async() =>{
const {
data:{
data: {movies}
}
} = await axios.get(
"https://yts-proxy.now.sh/list_movies.json?sort_by=rating");
this.setState({movies, isLoading:false})
};
------>
์ดํ render() ์์ html ์์์ className์ ๋ฃ๊ณ
CSS ์์ ์ ์๋ฃํ๋ฉด localhost:3000์์ ์์ฑ๋ ํ์ด์ง ํ์ธ ๊ฐ๋ฅ!
์ด์ ์๋ฒ์ ์ฐ๊ฒฐํ์ฌ local์ด ์๋ ์น์ฌ์ดํธ์์ ํ์ธํ ์ ์๋๋ก ํด๋ณด์
gh-pages
๋์ ์น์ฌ์ดํธ๋ฅผ github page ๋๋ฉ์ธ์ ๋ํ๋๊ฒํจ
gituhb์์ ๋ฌด๋ฃ๋ก static pages html,css,javascript ์ ์น์ฌ์ดํธ๋ฅผ ํํํด์ค
1) gh-pages ์ค์น
npm i gh-pages
2) Package.json ์ค์
2-1) homepage ์์ฑ
"homepage" : " https://{ github ๊ณ์ ์ด๋ฆ }.github.io/{ ๊นํ๋ธ ๋ด ํ๋ก์ ํธ ์ด๋ฆ }"
"homepage": "https://ink-0.github.io/movie_app/"
2-2) scripts ์ถ๊ฐ
deploy , predeploy
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"deploy":"gh-pages -d build",
"predeploy":"npm run build"
},
3) build ๋๋ ํ ๋ฆฌ ์์ฑ
(๋ด๊ฐ ์ง CSS ๋ฑ์ด ์์ฝ๋ ํด๋๊ฐ ์์ฑ๋จ)
npm run build
4) deploy ์คํ
npm run deploy
<๋์ ์์>
deploy๋ฅผ ์คํ์ํค๋ฉด ์๋์ผ๋ก predeploy๋ฅผ ๋จผ์ ๋์์ํด
4-1) predeploy
npm run build ("build "์คํ) -> react-scripts build("build ๋๋ ํ ๋ฆฌ ์์ฑ")
4-2) deploy
gh-pages -d build (gh-pages ์ build ๋๋ ํ ๋ฆฌ ์ ๋ฌ ) -> published
5) ์ฌ์ดํธ published ํ์ธ
โ ๏ธ ์ค๋ฅ๊ฐ ๋๋ค๋ฉด ?
์ฌ๊ธฐ์ ๋๋ ์ค๋ฅ๊ฐ ๋ฌ๋๋ฐ ์ผ๋ค ์ฒซ๋ฒ์งธ,
์ค๋ฅ1) ์ฌ์ดํธ๋ช ์ ๋๋ก ํ์ธํ๊ธฐ
๋๋ fe-w6-free-style ( ๊ณต๋ github repository ์์ ๋ด branch ๋ง fork ํด์จ origin repository ) ์์
movie_app์ด๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด ๊ตฌํ์ค์ด์๋ค.
github page๋ repository๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋๋๋ฏ ํ๋ฐ
"homepage": "https://ink-0.github.io/movie_app/"
๋๋hoempage ๋ฅผ ์ด๋ ๊ฒ ํ๋ก์ ํธ ์์ ๋๋ ํ ๋ฆฌ๋ช (movie_app) ์ผ๋ก ์ง์ ํด๋๊ณ ํด๋น ์ฌ์ดํธ๋ฅผ ๊ฐ์ ํค๋ฉ๊ณ ์์๋ค.
gh-pages ๊ฐ ์ด๋์ ์์ฑ๋์๋์ง๋
ํด๋น repository์ githubํ์ด์ง -> GitHub pages -> Source ์์ ํ์ธํ์
Branch : gh-pages๋ก ๋์ด์๋์ง๋ ํ์ธ
์ค๋ฅ2) git-pages ๋ฒ์ ํ์ธํ๊ธฐ
git-pages ๋ฒ์ ๋๋ฌธ์ ๋์ค์ง ์์ ์ ์๋ค.
npm i gh-pages@2.0.1
์ด ๋ฒ์ ์ผ๋ก ๋ค์ ์ค์น๋ฅผ ์งํํ๋ ์ ์์ ์ผ๋ก ํ์ด์ง๊ฐ ๋์จ ๊ฑธ ํ์ธํ๋ค.
ํด ์ด์จ๋ ์ฑ๊ณต!!