我从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());
});
};
}
我已经在我的Reducer中写了这个案例:
case FETCH_PRODUCTS_SUCCESS:
return {
...state,
appState: {
...state.appState,
isCommentsLoadingFinished: true
},
domainData: { ...state.domainData, products: action.products }
};
我的问题是我无法理解action.products有效负载是否违反了“不变可变约简”原则。我不确定我的reducer之外的任何地方都无法更新我的response.data。因此,在这种情况下,它将违反“不变的减速器”原理。
请告诉我在这种情况下是否可以违反“不变的减速器”原则。而且,如果违反,我该怎么办? 预先谢谢你
答案 0 :(得分:0)
不是。由于您只是将products
设置为action.products
,这是来自fetch
的全新对象。
如果直接在应用程序的任何位置更新了Redux状态,就会发生这种情况。