Sobes.tech
Middle

Koji su popularni pristupi razvijeni za korišćenje Redux-a?

sobes.tech АИ

Одговор од АИ

  • Vanilla Redux: Osnovni pristup korišćenjem createStore, regularnih akcija, reducera i selektora. Zahteva mnogo boilerplate koda.
  • Redux Toolkit: Preporučeni pristup. Olakšava konfiguraciju i rad sa Redux-om pomoću alata kao što su configureStore, createSlice, createAsyncThunk. Smanjuje količinu boilerplate koda.
  • Reducer-i sa Immer: Korišćenje biblioteke Immer unutar reducer-a omogućava direktno mutiranje stanja u "shemu", a Immer generiše novo, nepromenjivo stanje. Pojednostavljuje logiku reducer-a.
  • Ducks: Strukturirani pristup gde se reducer-i, akcije i tipovi akcija za određenu funkcionalnost ili modul grupišu u jednu datoteku. Poboljšava čitljivost i održavanje.
// Primer strukture Ducks
// myFeature.js

const initialState = {
  // ...
};

const MY_FEATURE_ACTION = 'myFeature/MY_FEATURE_ACTION';

export default function myFeatureReducer(state = initialState, action) {
  // ...
}

export const myFeatureActionCreator = (payload) => ({
  type: MY_FEATURE_ACTION,
  payload,
});
  • Modularni pristup: Struktuiranje Redux logike po funkcijama ili modulima, gde svaki modul ima svoje reducere, akcije i selektore, često koristeći Redux Toolkit i hookove useSelector/useDispatch.
  • Redux-Saga/Redux-Thunk za side-effect-e: Korišćenje middleware-a za upravljanje asinhronim operacijama. Redux-Thunk za jednostavne asinhrone akcije (npr. fetch), Redux-Saga za složenije scenarije (konkurentnost, otkazivanje, kašnjenje).
// Primer Redux-Thunk
const fetchData = () => {
  return async (dispatch) => {
    try {
      dispatch({ type: 'FETCH_START' });
      const response = await fetch('/api/data');
      const data = await response.json();
      dispatch({ type: 'FETCH_SUCCESS', payload: data });
    } catch (error) {
      dispatch({ type: 'FETCH_FAILURE', payload: error.message });
    }
  };
};
  • Normalizacija stanja (Normalizr): Kada radite sa ugnježdenim i povezanim podacima, normalizacija pomaže da se izbegne dupliranje i olakšava ažuriranje.