Я очень новичок в redux-saga и пытаюсь получить простую демонстрационную работу, которая делает вызов API и выполняет разбиение на страницы. Насколько я понимаю, поток редукс-саги должен работать следующим образом. Размер страницы используется для ограничения количества данных, отображаемых при вызове API.

const PAGE_SIZE = 1; export const fetchItems = page ={amp}gt; (dispatch, getState) ={amp}gt; { const state = getState(); const offset = page * PAGE_SIZE; dispatch(setItemsCurrentPage(page)); if (getIsPageFetched(state, page)) { return; } dispatch(fetchItemsRequest()); fromItems.fetchItems({ limit: PAGE_SIZE, offset, }) .then((response) ={amp}gt; { const pageCount = Math.ceil(response.count / PAGE_SIZE); dispatch(fetchItemsResponse({ items: response.results, page, pageCount, })); }) }; 

Саураб Сан

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

selector.js

 /** * Direct selector to the container state domain */ const selectState = () ={amp}gt; state ={amp}gt; state.get("selectState"); export { selectState }; 
 saga.js import { call, put, select } from "redux-saga/effects"; import {selectState} from "./selector"; export function* fetchItems(page) { try { const state= yeild select(selectState()) const offset=page * PAGE_SIZE; yield put(setItemsCurrentPage(page)); /**for api calls you need use **call** method**/ const data={limit:PAGE_SIZE,offset}; const requestUrl = `${url}`; const options = { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }; const response = yield call(request, requestUrl, options); const pageCount = Math.ceil(response.count / PAGE_SIZE); yield put(fetchItemResponse({items:response.results,page,pageCount})) } catch (e) { yield put(LoadingError(e)); } } 

* Селекторы note в основном используются для получения данных из состояния, в thunk мы используем getState () и переход к данным, но в саге вам нужны селекторы для доступа к определенным данным состояния. Put используется для установки данных для хранения (в основном это действие), call используется для api hit. Для ясности просмотрите некоторые сообщения, видеоролики на youtube или официальные документы, но, на мой взгляд, thunk легче понять.