在NGRX Signal Store中,能否在withComputed计算值里调用withMethods方法?
在Store的withComputed中调用withMethods定义的方法是否被支持?
不支持直接在withComputed的计算属性中调用withMethods里定义的方法。
原因在于这类Store的构建逻辑中,withMethods和withComputed存在作用域隔离或执行顺序问题:计算属性初始化阶段,withMethods定义的方法还未被挂载到Store实例上,因此无法在计算属性的函数体内直接访问到这些方法。
可行的解决方式:
- 抽离公共逻辑为独立工具函数,在withMethods和withComputed中分别调用这个函数,避免跨块依赖
示例代码:// 抽离可复用的逻辑函数 const computeSum = (items) => { return items.reduce((acc, cur) => acc + cur.amount, 0) } const store = createStore({ withMethods: (store) => ({ getSum() { return computeSum(store.state.cartItems) } }), withComputed: (store) => ({ cartTotal: () => computeSum(store.state.cartItems) }) }) - 如果逻辑必须依赖Store内部状态,可直接在计算属性中编写对应逻辑,保持计算属性的纯函数特性(不依赖实例方法)
内容的提问来源于stack exchange,提问作者Ethan SK
相关产品推荐
相关产品推荐

