μν κ΄λ¦¬μ λν κ³ λ―Ό
νλ‘μ νΈμ λκΈ κΈ°λ₯μ ꡬννλ μ€, μ΅κ΄μ μΌλ‘ μ¬μ©νλ 리λμ€ μ½λλ₯Ό κ±·μ΄λ΄κ³ λλ μλ‘μ΄ λ¬Έμ μ μ λ°κ²¬νμ΅λλ€.
λκΈ μμ±, μ λ°μ΄νΈ, μμ μ μλ²μ API λ₯Ό μμ²νκ³ μλ΅ κ°μ λ°μ μ€κΈ°κΉμ§μ μκ°μ΄ κ½€λ(?) κΈΈλ€λ κ²μ λλ€.
μλ΅κ°μ λ°λΌ μ±κ³΅ μ¬λΆλ₯Ό νλ¨νκ³ μΆκ°(μμ ,μμ ) λ λκΈμ 보μ¬μ£ΌκΈ° λλ¬Έμ μ΄ λΆλΆμ μ΄μ© μ μλ λΆλΆμ΄λΌλ μκ°μ΄ λ€μμ§λ§..? μκ°, λ€λ₯Έ μλΉμ€λ€μ μ΄λ»κ² μ€μκ°μΌλ‘ λ°μνμ§?! λΌλ μλ¬Έμ μ΄ λ€μμ΅λλ€.
μ°Ύμ 보λ, ν΄κ²° λ°©λ²μ μμμ΅λλ€.
μμ²μ΄ μ±κ³΅νμ κ²μ΄λΌ μμνκ³ κ°μ 미리 보μ¬μ£Όκ³ ! κ·Έ λ€μ μλ²μμ μλ΅ κ°μ λ°μμ λ, μ€ν¨νλ€λ©΄ κ°μ κ±°λ¬ λ€μ΄λ κ²μ λλ€.
μ λ μ΄ λ°©λ²μ νμ©ν΄μΌ κ² λ€λ μκ°μ΄ λ€μκ³ ν νλ‘μ νΈμ μ λ§λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ ννκΈ° μν΄ κ³΅λΆνλ©° μ΄ κΈμ μλλ€.
μ°Έκ³ ν λ§ν¬λ€
https://fe-developers.kakaoent.com/2022/220224-data-fetching-libs/
μνκ΄λ¦¬κ° μ μ€μν΄ μ‘μκΉ?
UI/UX μ μ€μμ±κ³Ό ν¨κ» νλ‘λνΈ κ·λͺ¨κ° λ§μ΄ 컀μ§κ³ FE μμ μννλ μν μ΄ λμ΄λ¨ -> κ΄λ¦¬νλ μνκ° λ§μμ§.
μνλ?
- μ£Όμ΄μ§ μκ°μ λν΄ μμ€ν μ λνλ΄λ κ²μΌλ‘ μΈμ λ μ§ λ³κ²½λ μ μμ.
- λ¬Έμμ΄, λ°°μ΄, κ°μ²΄ λ±μ ννλ‘ μμ© νλ‘κ·Έλ¨μ μ μ₯λ λ°μ΄ν°.
- κ°λ°μ μ μ₯μμ κ΄λ¦¬ν΄μΌνλ λ°μ΄ν°λ€.
리μ‘νΈ νλ‘μ νΈμμμ μν
- Local State: 리μ‘νΈ μ»΄ν¬λνΈ μμμλ§ μ¬μ©λλ state
- Global State: Global Storeμ μ μλμ΄ νλ‘μ νΈ μ΄λμμλ μ κ·Όν μ μλ state
- Server State: μλ²λ‘λΆν° λ°μμ€λ state
μνκ΄λ¦¬λ?
- μνλ₯Ό κ΄λ¦¬νλ λ°©λ²μ λν κ²
- μνλ€μ μκ°μ λ°λΌ λ³νν¨
- React μμ λ¨λ°ν₯ λ°μΈλ©μ΄λ―λ‘ Props Drilling μ΄μλ μ‘΄μ¬
- Redux μ MobX κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©ν΄ ν΄κ²°νκΈ°λ ν¨
리λμ€μμ Server State μ²λ¦¬
λκΈ°μ μΈ λ‘μ§(Global State)μμλ μ‘μ κ³Ό 리λμλ₯Ό μ§κ΄μ μΌλ‘ μμ±ν μ μμ§λ§, λΉλκΈ° λ‘μ§(Server State)μ μ²λ¦¬νκΈ° μν΄μ λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©ν΄μΌ νλ€. λΉλκΈ° λ‘μ§μ μ²λ¦¬νλ λ―Έλ€μ¨μ΄λ redux-thunkμ redux-saga κ° μλ€.
redux-thunkλ storeμ λμ Έμ§ μ‘μ μ κ°λ‘μ±μ λΉλκΈ° λ‘μ§μ μνν ν μ‘μ μ λ°μ
-> μνκ° μΈμ λ°μλλμ§ μ νν μμ μ λͺ¨λ¦.
redux-saga λ μ½λκ° κΈΈλ€. λμ μ‘μ μ μμ κ°μ²΄ ννλ‘ μΈ μ μλ€.
React Query & SWR
- μ μΈμ μΌλ‘ νλ‘κ·Έλλ° ν μ μμ(μ₯ν©νμ§ μμ μ½λ)
- λμΌν API μμ²μ΄ μ¬λ¬ λ² νΈμΆλ κ²½μ° ν λ²λ§ μ€ν
- λ°μ΄ν°κ° dirty ν΄μ§ κ²½μ° μ μ ν μμ μ μμμ μ λ°μ΄νΈ
- Global Stateμ Server Stateμ κ΄μ¬μ¬λ₯Ό λΆλ¦¬
import useSWR from "swr";
function Profile() {
const { data, error } = useSWR("/api/user", fetcher, options);
if (error) return <div>failed to load</div>;
if (!data) return <div>loading...</div>;
return <div>hello {data.name}!</div>;
}
import { useQuery } from "react-query";
const useUser = id => {
const result = useQuery(`/user/${id}`, fetcher, options);
return result;
};
function Example() {
const { isLoading, error, data } = useUser("123");
if (isLoading) return "Loading...";
if (error) return "An error has occurred: " + error.message;
return <div>hello {data.name}!</div>;
}
μ¬μ©λ²μ λΉμ·ν©λλ€. fetcher λ promise λ₯Ό 리ν΄νλ λͺ¨λ ν¨μκ° μ¬ μ μμ΅λλ€.
data fetching λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ©΄, μ½κ² λ°μ΄ν°λ₯Ό κ°μ Έμ¬ μ μκ³ λμΌν μμ²μ νλ μ¬λ¬ μ»΄ν¬λνΈκ° λμμ λ λλ§ λλλΌλ ν λ²λ§ μμ²ν©λλ€. λν, λ°±κ·ΈλΌμ΄λμμ μλ²μ μ£ΌκΈ°μ μΌλ‘ pollingμ νλ©΄μ λ°μ΄ν°κ° μ ν¨νμ§ κ²μ¬νκ³ , μ ν¨νμ§ μμΌλ©΄ μ λ°μ΄νΈνμ¬ λ°μ΄ν°λ₯Ό λκΈ°νν©λλ€
'React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
리μ‘νΈ λμμΈ ν¨ν΄μ λν΄μ.. (0) | 2022.10.12 |
---|---|
React Redux Toolkit μ¬μ©νκΈ° (0) | 2022.08.29 |
React Hook μ΄λ ? (0) | 2022.08.28 |
React Life Cycle [ Class component μ Function component ] (0) | 2022.08.28 |
React Ref μ Dom (1) | 2022.08.27 |