Я получаю список продуктов с сервера в своем RN-приложении. Это массив объектов:
[{
"id": 1,
"title": "product1",
"img": "img1.png",
"text": "lorem ipsum 1"
},
{
"id": 2,
"title": "product2",
"img": "img2.png",
"text": "lorem ipsum 2"
}]
Я получаю данные таким образом:
export function fetchProducts() {
return (dispatch: Function) => {
return apiClient
.get("products/")
.then(response => {
dispatch(fetchProductsSuccess(response.data));
})
.catch(error => {
showErrorMessage(FETCH_CATALOGUE_FAIL_MESSAGE);
dispatch(fetchProductsFail());
});
};
}Я написал этот случай в моем редьюсере:
case FETCH_PRODUCTS_SUCCESS:
return {
...state,
appState: {
...state.appState,
isCommentsLoadingFinished: true
},
domainData: { ...state.domainData, products: action.products }
};
Моя проблема в том, что я не могу понять, нарушает ли полезная нагрузка action.products принцип «неизменяемого редуктора» или нет. Я не уверен, что мой response.data нельзя обновить нигде, кроме моего редуктора. Таким образом, в этом случае будет нарушен принцип «неизменяемого редуктора».
Скажите, пожалуйста, могу ли я в данном случае нарушать принцип "неизменяемого редуктора" или нет? А если нарушает, то как поступить? Заранее спасибо)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это не так. Поскольку вы просто устанавливаете products на action.products, который является совершенно новым объектом, исходящим из fetch.
Это произойдет, если вы обновите состояние избыточности непосредственно в любом месте вашего приложения.