Estoy trabajando en una aplicación de reacción en la que estoy usando redux para la administración del estado y tengo 2 funciones para llamar y quiero que se ejecuten solo después de que se ejecute la primera función.
Aquí hay un fragmento de lo que estoy haciendo:
if (this.props.page_num < this.props.numPages) { this.props.fetchCode(params, isFiltered, isSearched).then(() => { this.props.setPageNumber(this.props.page_num + 1); }); }Aquí estoy recibiendo un error que dice:
CodeTable.jsx?2468:132 Uncaught TypeError: this.props.fetchCode(...).then is not a functionFunción buscar código:
export function* fetchCode(action) { try { const response = yield call(Services.fetchCode, action.params); const { dtoList } = response.data.pagedList; const num_pages = response.data.pagedList.numPages; const total_records = response.data.pagedList.totalRecords; const page_number = response.data.pagedList.pageNumber; const postCodeSetsData = dtoList.map(({ }) => ({ })); yield put(ActionCreator.setCodes(dtoList, num_pages, total_records, postCodeData, page_number, action.isFiltered, action.isSearched)); } catch (error) { sagaException(error); } }Ya que estás usando redux saga, creo que lo más apropiado es componer otra saga.
export function* fetchCodeSetsAndSetPage(action) { try { yield put (ActionCreator.fetchCodes(...)); yield put (ActionCreator.setPageNumber(...)); } catch (error) { sagaException(error); } }Y luego llame a ese en su lugar en su componente.
Algunos documentos .
hacer que la función fetchCodeSets sea asíncrona. Puede escribir una promesa como entonces solo con funciones asíncronas. también use una declaración de retorno dentro de la función. La declaración de la función fetchCodeSets debería ser así
const fetchCodeSets = async (params) => { //codes here return; }