1. axios는 node.js와 브라우저를 위한, Promise기반 라이브러리이다
- JSON 데이터를 자동으로 변환해주기 때문에, fetch에서 사용해야했던 await result.json();을 할 필요 없다.
- 대신, fetch API는 내장되어 있기 때문에 따로 설치해줄 필요가 없지만, axios는 추가적으로 설치해야만 사용가능하다.
2. 기본 예시
import React from 'react';
import { Link, Outlet } from 'react-router-dom';
import { useEffect, useState } from 'react';
import axios from 'axios';
function ReactPage(props) {
const [ docs, setDocs ] = useState([]);
useEffect(() => {
async function fetchData() {
const result = await axios.get("https://jsonplaceholder.typicode.com/posts");
console.log(result);
console.log(result.data);
setDocs(result.data);
}
fetchData();
}, []);
return (
<div>
{ docs.map((doc) => (
<Link to={`${doc.id}`} key={ doc.id } style={{ display: 'block' }}>{ doc.title }</Link>
)) }
<Outlet />
</div>
);
}
export default ReactPage;
3. 만약 return을 사용해야 한다면?
useEffect(() => {
async function fetchData() {
const result = await axios.get("https://jsonplaceholder.typicode.com/posts");
console.log(result);
console.log(result.data);
return result.data;
}
fetchData().then((data) => {
setDocs(data);
})
}, []);