⊗jsrxPmATInr 45 of 57 menu

Redux에서 Thunks 소개

이전 장에서 우리는 데이터 교환을 위해 서버, 데이터베이스 및 클라이언트 작업을 구성했습니다. 이제 우리의 '동기식'으로 구성된 Redux 애플리케이션이 비동기식 클라이언트와 상호 작용할 수 있도록 마지막 다리를 놓아야 합니다. 우리는 이전 장의 마지막 강의에서 생성한 이 클라이언트를 사용하여 요청을 보내고 응답에서 필요한 데이터를 받아올 것입니다.

이전 섹션의 첫 강의에서 기억하듯이, Redux는 비동기 로직 작업에 대해 알지 못하며 이를 위해 thunk 미들웨어를 사용할 것입니다. 이 미들웨어는 전송된 actions를 처리하고, thunk 코드에서 store의 dispatchgetState 메서드를 사용하며, dispatch 메서드가 일반 JS 객체뿐만 아니라 함수 및 프로미스와 같은 엔터티와도 작동하도록 도와줍니다.

일반적으로 thunk 함수는 dispatchgetState (필요한 경우) 두 인수와 함께 호출되며, 이 함수 본문에서 사용할 수 있습니다. 이를 통해 일반 액션들을 전송할 수 있습니다. 또한 store.dispatch를 통해 전송할 수도 있습니다. 이러한 함수의 예는 아래에 나와 있습니다:

const changeColorThunk = (dispatch, getState) => { const colorBefore = getState() console.log(`Old Color: ${colorBefore.color}`) dispatch(changeColor()) const colorAfter = getState() console.log(`New Color: ${colorAfter.color}`) } store.dispatch(changeColorThunk)

이제 제품 애플리케이션을 열어봅시다. 애플리케이션 시작 시 서버로부터 받아야 할 첫 번째 것은 제품 목록입니다. 일반적으로 thunks는 슬라이스 파일에 작성되므로, productsSlice.js 파일을 열겠습니다.

기쁜 소식은 Redux Thunk 설치에 대해 고민할 필요가 없다는 것입니다. 왜냐하면 RTK의 configureStore 함수가 이미 이를 대신해 줄 것이기 때문입니다. 따라서 파일에서 import에 createAsyncThunk를 추가하기만 하면 됩니다:

import { createSlice, nanoid, createAsyncThunk } from '@reduxjs/toolkit'

클라이언트도 import에 추가합시다:

import { client } from '../../api/client'

이제 createAsyncThunk를 사용하여 제품을 가져오기 위한 첫 번째 thunk를 생성하겠습니다. initialState 객체 선언 바로 다음에 이 작업을 수행합시다:

export const fetchProducts = createAsyncThunk()

createAsyncThunk의 첫 번째 매개변수는 생성된 action의 유형에 대한 문자열을 받고, 두 번째 매개변수는 payload에 대한 콜백 함수로, 결과적으로 데이터나 오류가 있는 프로미스를 반환합니다 (client.js 파일 참조). 함수 코드에서 우리는 client.get을 호출하고 서버에 지정한 경로를 전달합니다 (server.js에서 http.get이 받는 매개변수 확인):

export const fetchProducts = createAsyncThunk( 'products/fetchProducts', async () => { const response = await client.get('/fakeServer/products') return response.data } )

학생 애플리케이션을 열으십시오. 여기서 studentsSlice.js 파일을 열으십시오. thunk 생성을 위해 createAsyncThunk 함수와 서버에 API 요청을 보내기 위한 client를 import 하십시오.

initialState 객체 선언 직후에 createAsyncThunk를 사용하여 학생 목록을 가져오기 위한 thunk fetchStudents를 생성하십시오. 이 thunk는 server.js 파일에 지정된 주소인 /fakeServer/students로 GET 요청을 보내고, 강의 자료에 표시된 대로 response.data를 반환해야 합니다. createAsyncThunk의 첫 번째 매개변수로 action 유형에 대한 문자열 students/fetchStudents를 지정하십시오.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부