Promise
Promise로 간단히 api를 비동기적으로 호출하면..
import { useState } from 'react';
import axios from 'axios';
const App = () => {
const [data, setData] = useState(null);
const onClick = () => {
axios
.get('https://jsonplaceholder.typicode.com/todos/1')
.then((response) => {
setData(response.data);
});
};
return (
<div>
<div>
<button onClick={onClick}>Load data</button>
</div>
{data && (
<textarea
rows={7}
value={JSON.stringify(data, null, 2)}
readOnly={true}
/>
)}
</div>
);
};
export default App;
async/await 문
이를 async/await 문으로 바꾸면?
import { useState } from 'react';
import axios from 'axios';
const App = () => {
const [data, setData] = useState(null);
const onClick = async () => {
try {
const response = await axios.get(
'https://jsonplaceholder.typicode.com/todos/1',
);
setData(response.data);
} catch (e) {
console.log(e);
}
};
return (
<div>
<div>
<button onClick={onClick}>Load data</button>
</div>
{data && (
<textarea
rows={7}
value={JSON.stringify(data, null, 2)}
readOnly={true}
/>
)}
</div>
);
};
export default App;
async/await 문으로 바꾸고 내부에는 try/catch 문을 넣어주었다.
실제 newsapi 요청하기
import { useState } from 'react';
import axios from 'axios';
import { newsApiKey } from './api-key';
const App = () => {
const [data, setData] = useState(null);
const onClick = async () => {
try {
const response = await axios.get(
`https://newsapi.org/v2/top-headlines?country=kr&apiKey=${newsApiKey}`,
);
setData(response.data);
} catch (e) {
console.log(e);
}
};
return (
<div>
<div>
<button onClick={onClick}>Load data</button>
</div>
{data && (
<textarea
rows={7}
value={JSON.stringify(data, null, 2)}
readOnly={true}
/>
)}
</div>
);
};
export default App;
get 요청하는 url만 바꿔주었다.
뉴스가 잘 온다. 사랑을 하면 예뻐지고 건강해진다고 한다. 우리 모두 사랑을 하자.
'Research > React' 카테고리의 다른 글
React_참고_여러 input들 데이터 종합하기 (0) | 2023.11.05 |
---|---|
로컬 스토리지, 쿠키로 토큰 저장 시 리스크 차이 (0) | 2023.11.02 |
React_redirect 하기 (0) | 2023.10.30 |
React_NotFound 페이지 만들기 (0) | 2023.10.30 |
React_게시글 목록에서 현재 게시글 스타일 표시하기 (0) | 2023.10.30 |
댓글