【问题标题】:Immutable action.payload in React Native ReduxReact Native Redux 中的不可变 action.payload
【发布时间】:2023-04-09 09:47:01
【问题描述】:

我在我的 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 有效负载是否违反了“不可变减速器”原则。我不确定我的 response.data 不能在任何地方更新,除了我的减速器。因此,在这种情况下,它将违反“不可变减速器”原则。

请告诉我在这种情况下我是否可以违反“不可变减速器”原则。而且,如果违反了,我该怎么办? 提前谢谢你)

【问题讨论】:

    标签: javascript reactjs react-native redux


    【解决方案1】:

    它没有。由于您只是将products 设置为action.products,这是一个来自fetch 的全新对象。

    如果您直接在应用程序的任何位置更新 redux 状态,就会发生这种情况。

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 2016-07-06
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 2019-09-09
      • 2023-01-19
      • 2016-10-02
      • 2018-10-16
      相关资源
      最近更新 更多