Reactjs React redux减速器工作不正常

Reactjs React redux减速器工作不正常,reactjs,Reactjs,我有这个减速机: case actionTypes.SET_ACTIVE: const editItem = accounts.map((item)=> item.id !== action.id ? item : {...item,active:!item.active}) console.log(editItem) return { ...state, accounts:

我有这个减速机:

    case actionTypes.SET_ACTIVE:
      const editItem = accounts.map((item)=> item.id !== action.id ? item : {...item,active:!item.active})
      
      console.log(editItem)
          return {
            ...state,
            accounts: editItem
          }
    default:
      return state;
  }
假设我在状态数组中有两个项目帐户我只想实现如果一个项目.active为true,我单击第二个项目,则第一个项目.active应更改为false,单击的项目ite.active应更改为true

我试着用过滤器来做这件事,但它不起作用,于是回到地图上


有什么解决方案吗?

您需要重新创建items对象,对于与单击的项目不匹配的项目,active设置为
false

case actionTypes.SET_ACTIVE:
      const editItem = accounts.map((item)=> item.id !== action.id ? {...item,active: false} : {...item,active: true})
      
      console.log(editItem)
          return {
            ...state,
            accounts: editItem
          }
    default:
      return state;
  }
PS:如果可能的话,您应该为每个复选框维护一个本地状态,并通过切换功能进行设置,然后在稍后的某个点您想要分派。
我不知道,你是如何设计这个应用程序的,但只是一个额外的建议

为了简化,您可以这样做:
{…item,active:item.id===action.id?true:false}