React는 정적(static) 데이터와 함께 사용할 수 있습니다. 하지만 이런 데이터만 사용하는건 금방 지루해지죠...
아마 이런 궁금점이 생길텐데요
Component로 서버사이드 API 데이터를 받아오려면 어떻게 할까요?
사실 React는 View library입니다. 즉 네트워킹 기능을 제공하지 않습니다. 만약 이 사실을 모르고 계셨다면 what react actually is를 읽어보시고 다시 돌아와주세요!
React에는 네트워킹 기능이 없으므로 서버사이드 데이터를 React로 전달하려면 2가지 절차가 필요합니다:
API 데이터 받기
그 데이터를 React로 보내기(props)
이 글에선 서버에서 React로 가는 데이터 흐름을 알아보겠습니다. 우선 서버부터 시작하겠습니다.
Server
서버는 인터넷을 통해 어플리케이션에 데이터를 제공합니다.
서버는 Github API같이 3rd-party API일수도 있고, 아니면 실제 여러분이 운영하고있는 서버일수도 있습니다. 여러분의 서버라면 Rails, Django, Tomcat, Apache 등등 일 수 있겠죠. Express는 Node.js에서만 실행되기 때문에 React 개발자에게 공통된 사항입니다.
JSON
서버에서 브라우저로 데이터를 전송하는 가장 좋은 형식은 JSON입니다.
JSON은 속성 : 값(attribute : value) 으로 구성된 텍스트 기반 데이터 형식입니다. Javascript의 객체와 유사합니다.
JSON의 예시입니다.
{
"total_count": 47524,
"items": [
{
"name": "react",
"full_name": "facebook/react",
"owner": {
"login": "facebook"
},
"description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.",
"language": "JavaScript"
},
{
"name": "react-native",
"full_name": "facebook/react-native",
"owner": {
"login": "facebook"
},
"description": "A framework for building native apps with React.",
"language": "JavaScript"
}
]
}
Networking Javascript
클라이언트 사이드의 Javascript 네트워킹은 AJAX로 이뤄집니다.
AJAX는 'Asynchronous Javascript And Xml'의 약자입니다. 실제론 XML보단 JSON이 훨씬 더 많이 사용되고있습니다.
브라우저는 XMLHTTPRequest API 또는 Fetch API를 사용해서 AJAX/network request를 보냅니다. 개발자들이 AJAX를 쉽게 사용할수 있게 도와주는 javascript library가 많이 있습니다.
AJAX library comparison을 읽으면 사용할 AJAX library를 결정하는 데 도움이 될거에요.
Data Store
서버에서 데이터를 가져온다면, 어딘가 저장해야겠죠?
데이터 저장소는 Redux 아니면 다른 flux가 될 수 있습니다.
만약 단순한 어플리케이션이라면 React의 state에 데이터를 저장할수도 있습니다.
React
데이터 저장까지 끝낸다면, React를 사용할 준비가 되었습니다!
보통은 데이터를 props를 통해 전달합니다. Redux 또는 Relay를 사용하면 자동으로 수행됩니다.