【问题标题】:What should be the correct inital value for redux stateredux 状态的正确初始值应该是多少
【发布时间】:2022-01-08 20:41:09
【问题描述】:

我想使用 Redux 创建“添加到购物车”功能,所以我定义了一个 reducer 函数,它接受状态和操作,其中状态提供了一个默认值。

export const defaultValue= {
  products: [
    {
      id: "",
      title: "",
      description: "",
      image: "",
      price: 0,
      amount: 0,
    },
  ]
};

export const manageCart = (
  state = defaultValue,
  action: { type: string; payload: any}
) => {
  switch (action.type) {
    case actionConstants.ADD_TO_CARTS:
      {
       // ADD to card
      }
  break;
    case actionConstants.REMOVE_FROM_CART: {
      // Remove from card     
     }
 default:
      return state;
}
}

因此,默认情况下,我在购物车上看到了这个空白产品,这让我的逻辑进一步混乱。既然必须为状态提供初始值,我应该做些什么不同的事情来摆脱这个问题。

【问题讨论】:

    标签: javascript reactjs typescript redux react-redux


    【解决方案1】:

    所以默认情况下,我会在我的购物车上看到这个空白产品,这会扰乱我的逻辑。

    因为您传递的是默认状态下的空白产品!

    只传递一个空数组

    export const defaultValue= {
      products: []
    };
    

    【讨论】:

    • 我在这里使用 TypeScript,所以如果我尝试从 state (state.products.amount) 访问任何值,我会得到 'Property 'amount' does not exist on type 'never'',所以我必须为它提供价值
    • 无论如何您都无法访问 state.products.amount 因为 products 是一个数组。 state.products.map(({ id, title, amount }) => { ... })
    • 当然。但它不会抛出错误 'Property 'products' does not exist on type 'never[]' 因为它不知道产品是什么。
    • @ArpitMishra 如果您使用的是 Typescript,那么您应该为状态定义一个接口!
    • @MurhafSousli 是的,解决了这个问题。
    猜你喜欢
    • 2023-03-27
    • 2016-12-18
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 2020-03-12
    • 2023-03-29
    • 2016-09-22
    • 2020-02-09
    相关资源
    最近更新 更多