我在 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 不能在我的 reducer 以外的任何地方更新。因此,在这种情况下,它将违反“不可变 reducer ”原则。
请告诉我在这种情况下我是否可以违反“不可变 reducer ”原则。而且,如果违反了,我该怎么办? 提前谢谢你)
最佳答案
事实并非如此。由于您只是将 products
设置为 action.products
,这是一个来自 fetch
的全新对象。
如果您直接在应用程序的任何位置更新 redux 状态,就会发生这种情况。
关于javascript - React Native Redux 中不可变的 action.payload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56711480/