selector.js
/**
* Direct selector to the container state domain
*/
const selectState = () => state =>
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));
}
}
* Селекторы заметок в основном используются для получения данных из состояния, в thunk мы используем getState () и переходим к данным, но вСага, вам нужны селекторы для доступа к определенным данным состояния. Put используется для установки данных для хранения (в основном, действие), call используется для api hit. Просмотрите некоторые сообщения, видео на YouTubeили официальные документы для ясности, но, на мой взгляд, тук легче понять.