You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Signal Store中实现互斥状态的切换与置假逻辑?

解决方法

直接修改activeStatus方法的逻辑,在遍历数组时同时处理两个目标ID的状态:

activeStatus(statusId: string, statusFalse: string): void {
  patchState(store, {
    isActive: store.isActive().map((item) => {
      if (item.id === statusFalse) {
        return { ...item, status: false };
      }
      if (item.id === statusId) {
        return { ...item, status: !item.status };
      }
      return item;
    }),
  });
}

逻辑解释

  • 遍历isActive列表时,先把指定的statusFalse项(也就是doubleSided)的状态强制设为false,确保它不会和目标项同时激活
  • 然后对statusId项(也就是singleSided)执行状态切换操作
  • 其他所有项保持原有状态不变

调用store.activeStatus('singleSided', 'doubleSided')后,就能实现:

  • singleSided的状态在激活/未激活间切换
  • doubleSided始终处于未激活状态,完全满足二者不能同时为true的要求

内容的提问来源于stack exchange,提问作者Karol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:06:02