본문 바로가기

React

(36)
[React] #6 | Context 와 함께 사용하기 리액트의 Context와 API연동을 함께 하고 싶다면 어떻게 해야 되는지 알아보자. ( + 코드를 함수화해서 재사용하는 것 까지! ) 컴포넌트에서 필요한 외부 데이터들은 컴포넌트 내부에서 useAsync와 같은 Hook을 사용해서 작업하면 충분하다! 하지만, 가끔씩 특정 데이터들은 다양한 컴포넌트에서 필요하게 될때도 있는데 그럴때에는 Context를 사용하면 개발이 편해진다! 예를 들면, 현재 로그인된 사용자의 정보, 설정 등 1️⃣ Context 준비하기 import React, { createContext, useReducer, useContext } from 'react'; // UsersContext에서 사용 할 기본 상태 const initialState = { users : { loading..
[React] #5 | react-async, 요청 상태 관리하기 💡react-async? #4에서 만든 useAsync와 비슷한 함수가 들어있는 라이브러리 이안의 함수이름도 useAsync : 사용법이 좀 다름! 라이브러리 설치 yarn add react-async react-async의 공식 사용법 import { useAsync } from "react-async" const loadCustomer = async ({ customerId }, { signal }) => { const res = await fetch(`/api/customers/${customerId}`, { signal }) if (!res.ok) throw new Error(res) return res.json() } const MyComponent = () => { const { data, e..
[React] #4 | useAsync 커스텀 Hook 만들어서 사용하기 데이터를 요청할때마다 리듀서를 작성하는건 번거롭다. 매번 반복되는 코드를 작성하는 대신에, 커스텀 Hook을 만들어서 요청 상태 관리 로직을 쉽게 재사용하는 방법을 알아보자. useAsync.js import { useReducer, useEffect } from 'react' function reducer(state, action) { switch (action.type) { case 'LOADING': return { loading: true, data: null, error: null }; case 'SUCCESS': return { loading: false, data: action.data, error: null }; case 'ERROR': return { loading: false, data..
[React] #3 | useReducer로 요청 상태 관리 #2 에서의 useState 대신에, useReducer를 사용하여 구현을 해보자 useReducer을 사용하여 LOADING, SUCESS, ERROR 액션에 따라 다르게 처리하기 Users.js import React, {useState, useEffect} from 'react' import axios from 'axios'; function reducer(state, action){ switch(action.type){ case 'LOADING': return{ loading: true, data: null, error: null }; case 'SUCCESS': return{ loading: false, data: action.data, error: null }; case 'ERROR': ret..
[React] #2 | API 연동의 기본 1️⃣ 설정 axios 라이브러리 설치하기 $ cd api-integrate $ yarn add axios 💡간단히 자주 사용되는 4가지 메서드 정리! GET : 데이터 조회 POST : 데이터 등록 PUT : 데이터 수정 DELETE : 데이터 제거 2️⃣ axios 사용법 (GET) import axios from 'axios'; axios.get('/users/1'); 3️⃣ POST 사용법 ( 새로운 데이터 등록 ) 두번째 파라미터에 등록하고자 하는 정보 넣기 axios.post('/users',{ username: 'blabla', name: 'blabla' }); 💡useState와 useEffect로 데이터 로딩하기 useState : 요청상태관리 useEffect : 컴포넌트가 렌더링되는 ..