Reactμ experimental_useSubscription ν μ μ¬μ©νμ¬ ν¨μ¨μ μΈ κ΅¬λ κ΄λ¦¬, λ°μ΄ν° κ°μ Έμ€κΈ°, UI μ λ°μ΄νΈ λ°©λ²μ μμ보μΈμ. ν₯μλ μ±λ₯κ³Ό λ°μμ±μ μν΄ κ΅¬λ μ ꡬννκ³ μ΅μ ννλ λ°©λ²μ λ°°μλλ€.
React experimental_useSubscription: ꡬλ κ΄λ¦¬λ₯Ό μν μ’ ν© κ°μ΄λ
Reactμ experimental_useSubscription ν
μ μΈλΆ λ°μ΄ν° μμ€μ λν ꡬλ
μ κ΄λ¦¬νλ κ°λ ₯νκ³ ν¨μ¨μ μΈ λ°©λ²μ μ 곡ν©λλ€. μ΄ μ€νμ APIλ₯Ό μ¬μ©νλ©΄ React μ»΄ν¬λνΈκ° λΉλκΈ° λ°μ΄ν°μ ꡬλ
νκ³ λ°μ΄ν°κ° λ³κ²½λ λλ§λ€ UIλ₯Ό μλμΌλ‘ μ
λ°μ΄νΈν μ μμ΅λλ€. μ΄ κ°μ΄λμμλ experimental_useSubscriptionμ λν ν¬κ΄μ μΈ κ°μ, μ΄μ , ꡬν μΈλΆ μ 보 λ° μ¬μ© μ΅μ νλ₯Ό μν λͺ¨λ² μ¬λ‘λ₯Ό μ 곡ν©λλ€.
experimental_useSubscriptionμ΄λ 무μμΈκ°?
experimental_useSubscription ν
μ μΈλΆ λ°μ΄ν° μμ€μ ꡬλ
νλ κ³Όμ μ λ¨μννκΈ° μν΄ μ€κ³λ Reactμ μ€νμ κΈ°λ₯μ
λλ€. μ ν΅μ μΌλ‘ Reactμμ ꡬλ
μ κ΄λ¦¬νλ κ²μ μλ μ€μ , ν΄μ λ° μν κ΄λ¦¬λ₯Ό ν¬ν¨νμ¬ λ³΅μ‘ν μ μμ΅λλ€. experimental_useSubscriptionμ λ°μ΄ν° ꡬλ
λ° λ°μ΄ν° λ³κ²½ μ μ»΄ν¬λνΈ μλ μ
λ°μ΄νΈλ₯Ό μν μ μΈμ APIλ₯Ό μ 곡νμ¬ μ΄ κ³Όμ μ κ°μνν©λλ€. ν΅μ¬ μ΄μ μ μλ ꡬλ
κ΄λ¦¬μ 볡μ‘μ±μ μΆμννμ¬ λ κΉ¨λνκ³ μ μ§ κ΄λ¦¬νκΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μλ€λ κ²μ
λλ€.
μ€μ μ°Έκ³ : μ΄ APIλ μ€νμ μΌλ‘ νμλμ΄ μμΌλ©°, μ΄λ ν₯ν React λ²μ μμ λ³κ²½λ μ μμμ μλ―Έν©λλ€. μ£Όμν΄μ μ¬μ©νκ³ μ μ¬μ μΈ μ λ°μ΄νΈλ μμ μ λλΉν΄μΌ ν©λλ€.
μ experimental_useSubscriptionμ μ¬μ©ν΄μΌ νλκ°?
experimental_useSubscriptionμ Reactμμ ꡬλ
κ΄λ¦¬λ₯Ό μν λ§€λ ₯μ μΈ μ΅μ
μΌλ‘ λ§λλ λͺ κ°μ§ μ₯μ μ΄ μμ΅λλ€:
- κ°μνλ ꡬλ κ΄λ¦¬: λ°μ΄ν° μμ€ κ΅¬λ κ³Όμ μ λ¨μννλ μ μΈμ APIλ₯Ό μ 곡νμ¬ λ³΄μΌλ¬νλ μ΄νΈ μ½λλ₯Ό μ€μ΄κ³ μ½λ κ°λ μ±μ ν₯μμν΅λλ€.
- μλ μ λ°μ΄νΈ: ꡬλ ν λ°μ΄ν°κ° λ³κ²½λ λλ§λ€ μ»΄ν¬λνΈκ° μλμΌλ‘ λ€μ λ λλ§λμ΄ UIκ° μ΅μ λ°μ΄ν°μ λκΈ°νλ μνλ₯Ό μ μ§ν©λλ€.
- μ±λ₯ μ΅μ ν: Reactλ λΆνμν μ¬λ λλ§μ μ΅μννλλ‘ κ΅¬λ κ΄λ¦¬λ₯Ό μ΅μ ννμ¬ μ ν리μΌμ΄μ μ±λ₯μ ν₯μμν΅λλ€.
- λ€μν λ°μ΄ν° μμ€μμ ν΅ν©: GraphQL, Redux, Zustand, Jotai λ° μ¬μ©μ μ μ λΉλκΈ° λ°μ΄ν° μ€νΈλ¦Όμ ν¬ν¨ν λ€μν λ°μ΄ν° μμ€μ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
- 보μΌλ¬νλ μ΄νΈ κ°μ: ꡬλ μ μλμΌλ‘ μ€μ νκ³ κ΄λ¦¬νλ λ° νμν μ½λμ μμ μ€μ λλ€.
experimental_useSubscriptionμ μλ λ°©μ
experimental_useSubscription ν
μ κ΅¬μ± κ°μ²΄λ₯Ό μΈμλ‘ λ°μ΅λλ€. μ΄ κ°μ²΄λ λ°μ΄ν° μμ€μ ꡬλ
νλ λ°©λ², κ΄λ ¨ λ°μ΄ν°λ₯Ό μΆμΆνλ λ°©λ², μ΄μ λ°μ΄ν° κ°κ³Ό νμ¬ λ°μ΄ν° κ°μ λΉκ΅νλ λ°©λ²μ μ§μ ν©λλ€.
κ΅¬μ± κ°μ²΄λ μΌλ°μ μΌλ‘ λ€μ μμ±μ ν¬ν¨ν©λλ€:
createSubscription: λ°μ΄ν° μμ€μ λν ꡬλ μ μμ±νλ ν¨μμ λλ€. μ΄ ν¨μλgetCurrentValueλ©μλμsubscribeλ©μλκ° μλ κ°μ²΄λ₯Ό λ°νν΄μΌ ν©λλ€.getCurrentValue: ꡬλ μ€μΈ λ°μ΄ν°μ νμ¬ κ°μ λ°ννλ ν¨μμ λλ€.subscribe: μ½λ°±μ μΈμλ‘ λ°μ λ°μ΄ν° μμ€μ ꡬλ νλ ν¨μμ λλ€. λ°μ΄ν°κ° λ³κ²½λ λλ§λ€ μ½λ°±μ΄ νΈμΆλμ΄μΌ ν©λλ€.isEqual(μ ν μ¬ν): λ κ°μ λΉκ΅νμ¬ κ°μΌλ©΄ trueλ₯Ό λ°ννλ ν¨μμ λλ€. μ 곡λμ§ μμΌλ©΄ Reactλ μ격ν λλ±μ±(===)μ μ¬μ©νμ¬ λΉκ΅ν©λλ€. μ΅μ νλisEqualν¨μλ₯Ό μ 곡νλ©΄ νΉν 볡μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό λ€λ£° λ λΆνμν μ¬λ λλ§μ λ°©μ§ν μ μμ΅λλ€.
κΈ°λ³Έ ꡬν μμ
λ§€μ΄ μ λ°μ΄νΈλλ νμ΄λ¨Έλ₯Ό ꡬλ νλ κ°λ¨ν μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
```javascript import React, { useState, useEffect } from 'react'; import { experimental_useSubscription as useSubscription } from 'react'; // Create a custom subscription object const timerSubscription = { getCurrentValue: () => Date.now(), subscribe: (callback) => { const intervalId = setInterval(callback, 1000); return () => clearInterval(intervalId); }, }; function TimerComponent() { const currentTime = useSubscription(timerSubscription); return (μ΄ μμ μμλ:
getCurrentValueμsubscribeλ©μλλ₯Ό κ°μ§timerSubscriptionκ°μ²΄λ₯Ό μμ±ν©λλ€.getCurrentValueλ νμ¬ νμμ€ν¬νλ₯Ό λ°νν©λλ€.subscribeλ λ§€μ΄ μ 곡λ μ½λ°±μ νΈμΆνλ μΈν°λ²μ μ€μ ν©λλ€. μ»΄ν¬λνΈκ° μΈλ§μ΄νΈλλ©΄ μΈν°λ²μ΄ ν΄μ λ©λλ€.TimerComponentλtimerSubscriptionκ°μ²΄μ ν¨κ»useSubscriptionμ μ¬μ©νμ¬ νμ¬ μκ°μ κ°μ Έμ νμν©λλ€.
κ³ κΈ μμ λ° μ¬μ© μ¬λ‘
1. GraphQLκ³Ό ν΅ν©νκΈ°
experimental_useSubscriptionμ μ¬μ©νμ¬ Apollo Clientλ Relayμ κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ GraphQL ꡬλ
μ ν μ μμ΅λλ€. λ€μμ Apollo Clientλ₯Ό μ¬μ©ν μμ μ
λλ€:
Loading...
; if (error) returnError: {error.message}
; return (-
{data.newMessages.map((message) => (
- {message.text} ))}
μ΄ μμ μμλ:
NEW_MESSAGESλ Apollo Clientμ GraphQL ꡬ문μ μ¬μ©νμ¬ μ μλ GraphQL ꡬλ μ λλ€.useSubscriptionμ ꡬλ μ μλμΌλ‘ κ΄λ¦¬νκ³ μ λ©μμ§κ° μμ λ λλ§λ€ μ»΄ν¬λνΈλ₯Ό μ λ°μ΄νΈν©λλ€.
2. Reduxμ ν΅ν©νκΈ°
experimental_useSubscriptionμ μ¬μ©νμ¬ Redux μ€ν μ΄ λ³κ²½ μ¬νμ ꡬλ
ν μ μμ΅λλ€. λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
μ΄ μμ μμλ:
- Redux μ€ν μ΄λ₯Ό μΈμλ‘ λ°λ
reduxSubscriptionκ°μ²΄λ₯Ό μμ±ν©λλ€. getCurrentValueλ μ€ν μ΄μ νμ¬ μνλ₯Ό λ°νν©λλ€.subscribeλ μ€ν μ΄μ ꡬλ νκ³ μνκ° λ³κ²½λ λλ§λ€ μ½λ°±μ νΈμΆν©λλ€.ReduxComponentλreduxSubscriptionκ°μ²΄μ ν¨κ»useSubscriptionμ μ¬μ©νμ¬ νμ¬ μνλ₯Ό κ°μ Έμ μΉ΄μ΄νΈλ₯Ό νμν©λλ€.
3. μ€μκ° νμ¨ λ³νκΈ° ꡬννκΈ°
μΈλΆ APIμμ νμ¨μ κ°μ Έμ νμ¨μ΄ λ³κ²½λ λλ§λ€ UIλ₯Ό μ
λ°μ΄νΈνλ μ€μκ° νμ¨ λ³νκΈ°λ₯Ό λ§λ€μ΄ λ³΄κ² μ΅λλ€. μ΄ μμ λ experimental_useSubscriptionμ μ¬μ©μ μ μ λΉλκΈ° λ°μ΄ν° μμ€μ ν¨κ» μ¬μ©νλ λ°©λ²μ 보μ¬μ€λλ€.
Currency Converter
setUsdAmount(parseFloat(e.target.value) || 0)} />Converted Amount ({selectedCurrency}): {convertedAmount}
μ£Όμ κ°μ μ¬ν λ° μ€λͺ :
- μ΄κΈ° λ°μ΄ν° κ°μ Έμ€κΈ°:
startFetchingν¨μλ μ΄μ asyncν¨μμ λλ€.- μΈν°λ²μ μ€μ νκΈ° μ μ μ΄κΈ°
fetchExchangeRates()λ₯Ό νΈμΆν©λλ€. μ΄λ₯Ό ν΅ν΄ μ»΄ν¬λνΈκ° λ§μ΄νΈλμλ§μ λ°μ΄ν°λ₯Ό νμνλ©°, 첫 λ²μ§Έ μΈν°λ²μ΄ μλ£λ λκΉμ§ κΈ°λ€λ¦¬μ§ μμ΅λλ€. - 첫 λ²μ§Έ λ°μ΄ν° κ°μ Έμ€κΈ° μ§ν μ½λ°±μ΄ νΈλ¦¬κ±°λμ΄ κ΅¬λ μ μ΅μ νμ¨μ΄ μ¦μ μ±μμ§λλ€.
- μ€λ₯ μ²λ¦¬:
- μ΄κΈ° λ°μ΄ν° κ°μ Έμ€κΈ°, μΈν°λ² λ΄, κ·Έλ¦¬κ³ νμ¬ κ°μ κ°μ Έμ¬ λ λ°μν μ μλ μ μ¬μ μ€λ₯λ₯Ό μ²λ¦¬νκΈ° μν΄ λ ν¬κ΄μ μΈ
try...catchλΈλ‘μ΄ μΆκ°λμμ΅λλ€. - λλ²κΉ μ λκΈ° μν΄ μ€λ₯ λ©μμ§κ° μ½μμ κΈ°λ‘λ©λλ€.
- μ΄κΈ° λ°μ΄ν° κ°μ Έμ€κΈ°, μΈν°λ² λ΄, κ·Έλ¦¬κ³ νμ¬ κ°μ κ°μ Έμ¬ λ λ°μν μ μλ μ μ¬μ μ€λ₯λ₯Ό μ²λ¦¬νκΈ° μν΄ λ ν¬κ΄μ μΈ
- μ¦κ°μ μΈ μ½λ°± νΈλ¦¬κ±°:
- μ΄κΈ° λ°μ΄ν° κ°μ Έμ€κΈ° μμ μ§ν μ½λ°±μ΄ νΈμΆλλλ‘ νμ¬ λ°μ΄ν°κ° μ§μ° μμ΄ νμλλλ‘ ν©λλ€.
- κΈ°λ³Έκ°:
const exchangeRates = useSubscription(exchangeRatesSubscription) || {};μμ λΉ κ°μ²΄{}λ₯Ό κΈ°λ³Έκ°μΌλ‘ μ 곡νμ¬ νμ¨μ΄ μ μλμ§ μμμ λ μ΄κΈ° μ€λ₯λ₯Ό λ°©μ§ν©λλ€.
- λͺ
νμ±:
- μ½λμ μ€λͺ μ΄ λ μ΄ν΄νκΈ° μ½λλ‘ λͺ νν΄μ‘μ΅λλ€.
- κΈλ‘λ² API κ³ λ € μ¬ν:
- μ΄ μμ λ μ μΈκ³μ μΌλ‘ μ κ·Ό κ°λ₯ν exchangerate-api.comμ μ¬μ©ν©λλ€. μ΄λ¬ν μμ μμ μ¬μ©λλ APIκ° μ μΈκ³ μ¬μ©μλ₯Ό μν΄ μ λ’°ν μ μλμ§ νμ νμΈνμΈμ.
- APIλ₯Ό μ¬μ©ν μ μκ±°λ μ€λ₯λ₯Ό λ°ννλ κ²½μ°, μ€λ₯ μ²λ¦¬λ₯Ό μΆκ°νκ³ μ¬μ©μμκ² μ€λ₯ λ©μμ§λ₯Ό νμνλ κ²μ κ³ λ €νμΈμ.
- μΈν°λ² ꡬμ±:
- APIμ κ³Όλν μμ²μ 보λ΄μ§ μλλ‘ μΈν°λ²μ 60μ΄(60000λ°λ¦¬μ΄)λ‘ μ€μ νμ΅λλ€.
μ΄ μμ μμλ:
fetchExchangeRatesλ APIμμ μ΅μ νμ¨μ κ°μ Έμ΅λλ€.exchangeRatesSubscriptionμ ꡬλ μ μνgetCurrentValueλ°subscribeλ©μλλ₯Ό μ 곡ν©λλ€.getCurrentValueλ νμ¬ νμ¨μ κ°μ Έμ λ°νν©λλ€.subscribeλ μ£ΌκΈ°μ μΌλ‘(λ§€ 60μ΄λ§λ€) νμ¨μ κ°μ Έμ€κ³ μ½λ°±μ νΈμΆνμ¬ μ¬λ λλ§μ νΈλ¦¬κ±°νλ μΈν°λ²μ μ€μ ν©λλ€.CurrencyConverterμ»΄ν¬λνΈλuseSubscriptionμ μ¬μ©νμ¬ μ΅μ νμ¨μ κ°μ Έμ λ³νλ κΈμ‘μ νμν©λλ€.
νλ‘λμ νκ²½μ μν μ£Όμ κ³ λ € μ¬ν:
- μ€λ₯ μ²λ¦¬: API μ€ν¨ λ° λ€νΈμν¬ λ¬Έμ λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νκΈ° μν΄ κ°λ ₯ν μ€λ₯ μ²λ¦¬ κΈ°λ₯μ ꡬννμΈμ. μ¬μ©μμκ² μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό νμνμΈμ.
- μμ² μ ν(Rate Limiting): API μμ² μ νμ μΌλμ λκ³ μ΄λ₯Ό μ΄κ³Όνμ§ μλλ‘ νλ μ λ΅(μ: μΊμ±, μ§μ λ°±μ€ν)μ ꡬννμΈμ.
- API μ λ’°μ±: μ ννκ³ μ΅μ νμ¨μ μ 곡νλ μ λ’°ν μ μκ³ ννμ΄ μ’μ API μ 곡μ 체λ₯Ό μ ννμΈμ.
- ν΅ν λ²μ: APIκ° μ§μν΄μΌ νλ ν΅νλ₯Ό ν¬ν¨νλμ§ νμΈνμΈμ.
- μ¬μ©μ κ²½ν: λ°μ΄ν° κ°μ Έμ€κΈ° λ° UI μ λ°μ΄νΈλ₯Ό μ΅μ ννμ¬ λΆλλ½κ³ λ°μμ±μ΄ μ’μ μ¬μ©μ κ²½νμ μ 곡νμΈμ.
4. Zustand μν κ΄λ¦¬
```javascript import React from 'react'; import { create } from 'zustand'; import { experimental_useSubscription as useSubscription } from 'react'; // Create a Zustand store const useStore = create((set) => ({ count: 0, increment: () => set((state) => ({ count: state.count + 1 })), decrement: () => set((state) => ({ count: state.count - 1 })), })); // Create a custom subscription object for Zustand const zustandSubscription = (store) => ({ getCurrentValue: () => store.getState(), subscribe: (callback) => { const unsubscribe = store.subscribe(callback); return unsubscribe; }, }); function ZustandComponent() { const store = useStore; const subscription = zustandSubscription(store); const state = useSubscription(subscription); return (experimental_useSubscription μ¬μ©μ μν λͺ¨λ² μ¬λ‘
isEqualμ΅μ ν: λ°μ΄ν°κ° 볡μ‘ν κ²½μ°, λΆνμν μ¬λ λλ§μ λ°©μ§νκΈ° μν΄ μ¬μ©μ μ μisEqualν¨μλ₯Ό μ 곡νμΈμ. κ°λ¨ν κ°μ²΄μλ μμ λΉκ΅λ‘ μΆ©λΆν μ μμ§λ§, λ 볡μ‘ν λ°μ΄ν° ꡬ쑰μλ κΉμ λΉκ΅κ° νμν μ μμ΅λλ€.- μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νκΈ°: ꡬλ μμ± λλ λ°μ΄ν° κ°μ Έμ€κΈ° μ€μ λ°μν μ μλ λͺ¨λ μ€λ₯λ₯Ό ν¬μ°©νκ³ μ²λ¦¬νκΈ° μν μ€λ₯ μ²λ¦¬ κΈ°λ₯μ ꡬννμΈμ.
- μΈλ§μ΄νΈ μ ꡬλ
ν΄μ : λ©λͺ¨λ¦¬ λμλ₯Ό λ°©μ§νκΈ° μν΄ μ»΄ν¬λνΈκ° μΈλ§μ΄νΈλ λ λ°μ΄ν° μμ€μμ ꡬλ
μ ν΄μ ν΄μΌ ν©λλ€.
subscribeν¨μλ μ»΄ν¬λνΈκ° μΈλ§μ΄νΈλ λ νΈμΆλλ ꡬλ ν΄μ ν¨μλ₯Ό λ°νν΄μΌ ν©λλ€. - λ©λͺ¨μ΄μ μ΄μ
μ¬μ©:
experimental_useSubscriptionμ μ¬μ©νλ μ»΄ν¬λνΈμ μ±λ₯μ μ΅μ ννκΈ° μν΄ λ©λͺ¨μ΄μ μ΄μ κΈ°λ²(μ:React.memo,useMemo)μ μ¬μ©νμΈμ. - μ€νμ μ±κ²© κ³ λ €: μ΄ APIλ μ€νμ μ΄λ©° λ³κ²½λ μ μμμ κΈ°μ΅νμΈμ. ν₯ν React λ²μ μμ APIκ° μμ λλ©΄ μ½λλ₯Ό μ λ°μ΄νΈν μ€λΉλ₯Ό ν΄μΌ ν©λλ€.
- μ² μ ν ν μ€νΈ: ꡬλ μ΄ μ¬λ°λ₯΄κ² μλνκ³ μ»΄ν¬λνΈκ° μμλλ‘ μ λ°μ΄νΈλλμ§ νμΈνκΈ° μν΄ λ¨μ ν μ€νΈμ ν΅ν© ν μ€νΈλ₯Ό μμ±νμΈμ.
- μ±λ₯ λͺ¨λν°λ§: React κ°λ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈμ μ±λ₯μ λͺ¨λν°λ§νκ³ μ μ¬μ μΈ λ³λͺ© νμμ μλ³νμΈμ.
μ μ¬μ μΈ λ¬Έμ λ° κ³ λ € μ¬ν
- μ€νμ μν: APIλ μ€νμ μ΄λ©° λ³κ²½λ μ μμ΅λλ€. μ΄λ‘ μΈν΄ ν₯ν μ½λ μ λ°μ΄νΈκ° νμν μ μμ΅λλ€.
- 볡μ‘μ±: νΉν 볡μ‘ν λ°μ΄ν° μμ€μ κ²½μ° μ¬μ©μ μ μ ꡬλ μ ꡬννλ κ²μ΄ 볡μ‘ν μ μμ΅λλ€.
- μ±λ₯ μ€λ²ν€λ: λΆμ μ νκ² κ΅¬νλ ꡬλ
μ λΆνμν μ¬λ λλ§μΌλ‘ μΈν΄ μ±λ₯ μ€λ²ν€λλ₯Ό μ λ°ν μ μμ΅λλ€.
isEqualμ μΈμ¬ν μ£Όμκ° νμν©λλ€. - λλ²κΉ : ꡬλ κ΄λ ¨ λ¬Έμ λ₯Ό λλ²κΉ νλ κ²μ μ΄λ €μΈ μ μμ΅λλ€. λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°νκΈ° μν΄ React κ°λ°μ λꡬμ μ½μ λ‘κΉ μ μ¬μ©νμΈμ.
experimental_useSubscriptionμ λμ
μ€νμ API μ¬μ©μ΄ λΆνΈνκ±°λ ꡬλ κ΄λ¦¬μ λν λ λ§μ μ μ΄κ° νμν κ²½μ° λ€μ λμμ κ³ λ €ν΄ λ³΄μΈμ:
- μλ ꡬλ
κ΄λ¦¬:
useEffectμuseStateλ₯Ό μ¬μ©νμ¬ κ΅¬λ κ΄λ¦¬λ₯Ό μλμΌλ‘ ꡬνν©λλ€. μ΄λ μμ ν μ μ΄λ₯Ό μ 곡νμ§λ§ λ λ§μ 보μΌλ¬νλ μ΄νΈ μ½λκ° νμν©λλ€. - μλνν° λΌμ΄λΈλ¬λ¦¬: RxJSλ MobXμ κ°μ μλνν° λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ κ΅¬λ μ κ΄λ¦¬ν©λλ€. μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬λ κ°λ ₯νκ³ μ μ°ν ꡬλ κ΄λ¦¬ κΈ°λ₯μ μ 곡ν©λλ€.
- React Query/SWR: λ°μ΄ν° κ°μ Έμ€κΈ° μλ리μ€μ κ²½μ°, μΊμ±, μ¬κ²μ¦ λ° λ°±κ·ΈλΌμ΄λ μ λ°μ΄νΈλ₯Ό μν λ΄μ₯ μ§μμ μ 곡νλ React Queryλ SWRκ³Ό κ°μ λΌμ΄λΈλ¬λ¦¬ μ¬μ©μ κ³ λ €ν΄ λ³΄μΈμ.
κ²°λ‘
Reactμ experimental_useSubscription ν
μ μΈλΆ λ°μ΄ν° μμ€μ λν ꡬλ
μ κ΄λ¦¬νλ κ°λ ₯νκ³ ν¨μ¨μ μΈ λ°©λ²μ μ 곡ν©λλ€. ꡬλ
κ΄λ¦¬λ₯Ό λ¨μννκ³ UI μ
λ°μ΄νΈλ₯Ό μλνν¨μΌλ‘μ¨ κ°λ° κ²½νκ³Ό μ ν리μΌμ΄μ
μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. κ·Έλ¬λ APIμ μ€νμ μ±κ²©κ³Ό μ μ¬μ μΈ λ¬Έμ λ₯Ό μΈμ§νλ κ²μ΄ μ€μν©λλ€. μ΄ κ°μ΄λμμ μ€λͺ
ν λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ experimental_useSubscriptionμ ν¨κ³Όμ μΌλ‘ μ¬μ©νμ¬ λ°μμ±μ΄ λ°μ΄λκ³ λ°μ΄ν° κΈ°λ°μ React μ ν리μΌμ΄μ
μ ꡬμΆν μ μμ΅λλ€.
experimental_useSubscriptionμ μ±ννκΈ° μ μ νΉμ μꡬ μ¬νμ μ μ€νκ² νκ°νκ³ λμμ κ³ λ €νλ κ²μ μμ§ λ§μΈμ. μ μ¬μ μΈ μνκ³Ό μ΄μ μ κ°μν μ μλ€λ©΄, μ΄λ μ¬λ¬λΆμ React κ°λ° λ¬΄κΈ°κ³ μμ κ·μ€ν λκ΅¬κ° λ μ μμ΅λλ€. κ°μ₯ μ΅μ μ 보μ μ§μΉ¨μ μ»μΌλ €λ©΄ νμ 곡μ React λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.