데이터 패치

  • 로컬 데이터: 동적 호출(Dynamic Import) 방식 활용

  • 원격 데이터: Promise 또는 Async/Await를 사용하여 비동기 호출

  • 응답(Response) 받은 데이터를 사용해 컴포넌트 상태 업데이트

※ 비동기 통신을 사용한 데이터 패치 과정은 부작용(Side Effect)의 범주에 해당되므로 라이프 사이클 훅 함수를 사용해야 합니다.

1. 로컬 데이터, 동적 import 활용

로컬 JSON 데이터를 동적으로 호출한다.

class App extends Component {
  // 메서드
  fetchData = () => {
    import('@api/ediyaDB.json')
      .then(module => console.log(module))
      .catch(error => console.error(error.message));
  };

  // 라이프 사이클 훅
  componentDidMount() {
    this.fetchData();
  }
} 

2. 원격 데이터, fetch API (Promise) 활용

Firebase의 ediyaDB.json 데이터를 비동기 통신 요청하여 응답 받은 데이터를 JSON으로 변경하여 패치(Fetch) 할 수 있습니다.

Firebase에 새로운 프로젝트를 생성한 후, 실시간 데이터베이스를 만들어 JSON을 추가한 다음 원격 서비스에 이용할 수 있습니다.

.env

먼저 Firebase API, JSON 요청 경로를 환경 변수(.env) 파일에 추가합니다. 환경 변수는 전역 변수처럼 사용이 가능합니다.

환경 변수는 빌드 과정에서 임베드(embed) 되므로 외부에 공개되면 안되는 보안 코드를 사용해서는 안됩니다!

2.1 src/App/App.js

process.env를 통해 등록한 환경 변수 값을 가져와 데이터를 패치하는 구문을 작성합니다.

2.2 원격 데이터, Async/Await 활용

ES7의 async 함수를 사용해 데이터 패치를 비동기 통신으로 처리해봅니다.

3. Firebase 데이터베이스

Firebase실시간 데이터베이스를 사용하여 JSON을 원격으로 서비스 할 수 있습니다.

다음의 Firebase 데이터베이스 규칙을 참고하여 원하는 규칙을 설정합니다. (개발 중에는 '공개 규칙' 사용)

3.1 기본 규칙

3.2 공개 규칙

3.3 인증된 사용자 규칙

Last updated

Was this helpful?