Skip to main content

Command Palette

Search for a command to run...

React hook - useReducer - Fetching data

Published
•2 min read•View as Markdown
React hook - useReducer - Fetching data

1. Thông tin chung

  • Sử dụng useEffect để lấy data
  • Sử dụng axios để call API
  • Phương thức GET
  • URL: https://jsonplaceholder.typicode.com/posts/1
  • Sử dụng useReducer để quản lí state

2. Cách làm

2-1. Thêm các thư viện cần thiết

import {useEffect, useReducer} from 'react'
import axios from 'axios'

2-2. Khởi tạo state ban đầu

const initialState = {
  loading: true,
  post: {},
  error: ''
}

2-3. Tạo hàm reducer

  • Hàm này nhận 2 tham số
  • Tham số 1 là state muốn thay đổi giá trị
  • Tham số 2 là action
  • Tùy vào loại action mà thay đổi state tương ứng
const reducer = (state, action) => {
  switch (action.type) {
    case 'FETCH_DATA_SUCCESS':
      return {
        ...state,
        loading: false,
        post: action.payload.data,
        error: ''
      }      
    case 'FETCH_DATA_FAILURE':
      return {
        ...state,
        loading: false,
        post: {},
        error: action.payload.error
      }

    default:
      return {...state}
  }
}

2-4. Sử dụng useReducer

  • Hàm useReducer nhận 2 tham số
  • Tham số 1 là hàm reducer ở bước 2-3
  • Tham số 2 là biến initialState ở bước 2-2
  • Hàm useReducer trả về mảng 2 phần tử
  • Phần tử 1 là giá trị của state
  • Phần tử 2 là hàm để thay đổi state
const [state, dispatch] = useReducer(reducer, initialState)

2-5. Sử dụng useEffect

  • Hàm useEffect nhận 2 tham số
  • Tham số 1 là hàm xử lí lấy data
  • Tham số 2 là mảng rỗng để chỉ lấy data 1 lần
useEffect(() => {
  axios
    .get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
      dispatch({
        type: 'FETCH_DATA_SUCCESS',
        payload: { data: response.data }
      })
    })
    .catch(error => {
      dispatch({
        type: 'FETCH_DATA_FAILURE',
        payload: { error: error.message }
      })
    })
}, [])

3. Demo

ReactJS

Part 5 of 19

ReactJS là một thư viện JavaScript mã nguồn mở được thiết kế bởi Facebook để tạo ra những ứng dụng web hấp dẫn, nhanh và hiệu quả với mã hóa tối thiểu. Series hướng dẫn học ReactJS cơ bản.

Up next

React hook - useReducer - complex State & Action

1. Các bước làm 1-1. Import useReducer import { useReducer } from 'react' 1-2. Khởi tạo giá trị ban đầu const initialState = { firstName: 'Ken', lastName: 'Trung' } 1-3. Tạo hàm reducer Hàm này nhận 2 tham số Tham số 1 là state muốn thay đổi giá trị...

More from this blog

KenTrung VN

23 posts

Mình mới ba mấy tuổi thôi mà đứng dậy nhanh quá đã hơi chóng mặt 🤪🤪🤪