📘
simpleReact
  • 01. React 시작해보기
  • 02. Componet 구성해보기
  • 03. styled-component 로 스타일링해보기
  • 04. State 와 Props
  • 05. Loop
  • 06. Event
  • 07. Router
  • 08. TODO APP (Read, Create)
  • 09. TODO APP (DELETE)
  • 10. TODO APP (UPDATE - STATUS)
  • Context API
  • NextJS 배포하기 - NextJS, Travis Setup
  • NextJS 배포하기 - Beanstalk
  • Storybook
  • (1) 만들면서 알아보는 Hooks
  • (2) 만들면서 알아보는 Hooks
  • React 배포하기 - Travis, Github Pages
  • Dark Mode
Powered by GitBook
On this page
  • 1. JSON-Server 사용하기
  • 2. JSON-Server (:GET) 을 이용하여 데이터 가져오기
  • 3. 선택된 메모의 내용을 보여주기

Was this helpful?

(2) 만들면서 알아보는 Hooks

Previous(1) 만들면서 알아보는 HooksNextReact 배포하기 - Travis, Github Pages

Last updated 5 years ago

Was this helpful?

1. JSON-Server 사용하기

를 이용하여 실제 서버와 데이터 통신을 하는 것 처럼 구성해보겠습니다. 프로젝트 폴더 아래에 db.json 이라는 json 파일을 만들어주세요

// db.json

{
  "memos": [
    { "id": 1, "title": "임시 메모 데이터", "content": "임시 메모 데이터의 내용" }
  ]
}
$ npx json-server --watch db.json --port 8000

2. JSON-Server (:GET) 을 이용하여 데이터 가져오기

JSON-Server 는 HTTP method (GET, POST, PUT, DELETE) 등을 지원합니다. 페이지에 처음 진입했을때 db의 memos 값을 가져와 Application Context 의 memos 의 기본값을 세팅합니다.

// src/application-context.js

import React, { createContext, useContext, useEffect, useState } from "react";

const Context = createContext(null);

export function ApplicationContextProvider({ children }) {
  useEffect(() => {
    async function getMemos() {
      const response = await fetch('http://localhost:8000/memos')
      setMemos(response.ok ? await response.json() : [])
    }
    getMemos()
  }, [])

  const [memos, setMemos] = useState([]);
  
  // ...
  return <Context.Provider value={value}>{children}</Context.Provider>;
}

export function useApplicationContext() {
  return useContext(Context);
}

useEffect 의 dependency 가 [ ] 면 최초 한 번만 동작합니다.

첫 진입시 memos 를 fetch 하여 데이터를 가져 온 후 Application Context 의 memos 를 set 합니다.

3. 선택된 메모의 내용을 보여주기

지금은 임시로 선택된 메모의 값을 보여주고 있습니다. 선택된 메모의 값을 제거합니다.

// src/application-context.js

import React, { createContext, useContext, useEffect, useState } from "react";

const Context = createContext(null);

export function ApplicationContextProvider({ children }) {
  // ...
  const [memo, setMemo] = useState(null); // 선택된 memo 의 값을 null 로 변경합니다.

  const value = {
    memos,
    setMemos,
    memo,
    setMemo
  };
  return <Context.Provider value={value}>{children}</Context.Provider>;
}

export function useApplicationContext() {
  return useContext(Context);
}

JSON-Server