Мой избыточный код выглядит следующим образом
const getCategories = (res) => (dispatch,getState) => {
let categories = []
const result = res.results
console.log("here")
result.forEach((rawMaterial,index)=>{
if(!_.includes(categories,rawMaterial.category[0].name)){
categories.push(rawMaterial.category[0].name)
dispatch({type:UPDATE_CATEGORIES,categories})
}
});
console.log("here2")
}
По сути, это функция, которая помещает данные в массив категорий из входного параметра "res". Моя проблема в том, что функция getCategories не выполняет ничего после forEach l oop. Приведенный ниже фрагмент не выполняется в указанном выше коде.
console.log("here2")
Функция ничего не выполняет после forEach l oop.
Полный код
export const getRawMaterials = (params = {}) => (
dispatch,
getState,
{ fetch }
) => {
dispatch({ type: GET_RAW_MATERIALS_REQUEST, params });
const { token } = dispatch(getToken());
const { search, ordering } = getState().rawMaterials;
return fetch(
`/pands/raw-materials/?${qs.stringify({
search,
ordering
})}`,
{
method: "GET",
token,
success: res => {
const rawMaterials = res.results
dispatch({ type: GET_RAW_MATERIALS_SUCCESS, res });
const categories = getCategories(rawMaterials);
dispatch({type:UPDATE_CATEGORIES,categories})
},
failure: err => dispatch({ type: GET_RAW_MATERIALS_FAILURE })
}
);
};
//doubt here, function get return after forEach
const getCategories = (res) => {
let categories = []
const result = res;
return result.map(rawMaterial => {
if(_.includes(categories,rawMaterial.category[0].name)) return null;
return rawMaterial.category[0].name;
}
)
}
Мой код не работает из следующей строки:
const categories = getCategories(rawMaterials);
Также не выдает ошибку. Я думаю, что проблема заключается в ответе от бэкэнда.
"res" идет от бэкэнда. мои данные в "res.results". Когда я печатаю check "res.results", он показывает объект, но когда я его печатаю, он показывает массив объектов.