diff --git a/.changeset/proud-carrots-grab.md b/.changeset/proud-carrots-grab.md new file mode 100644 index 00000000000..8f1f62312b0 --- /dev/null +++ b/.changeset/proud-carrots-grab.md @@ -0,0 +1,5 @@ +--- +'@builder.io/qwik': patch +--- + +Fix: add subscription when doing `"prop" in store` diff --git a/packages/qwik/src/core/state/store.ts b/packages/qwik/src/core/state/store.ts index e5db4c72bec..08d9050740a 100644 --- a/packages/qwik/src/core/state/store.ts +++ b/packages/qwik/src/core/state/store.ts @@ -192,15 +192,23 @@ export class ReadWriteProxyHandler implements ProxyHandler { return true; } - has(target: TargetType, property: string | symbol): boolean { - if (property === QOjectTargetSymbol) { + has(target: TargetType, prop: string | symbol): boolean { + if (prop === QOjectTargetSymbol) { return true; } + const invokeCtx = tryGetInvokeContext(); + if (typeof prop === 'string' && invokeCtx) { + const subscriber = invokeCtx.$subscriber$; + if (subscriber) { + const isA = isArray(target); + this.$manager$.$addSub$(subscriber, isA ? undefined : prop); + } + } const hasOwnProperty = Object.prototype.hasOwnProperty; - if (hasOwnProperty.call(target, property)) { + if (hasOwnProperty.call(target, prop)) { return true; } - if (typeof property === 'string' && hasOwnProperty.call(target, _IMMUTABLE_PREFIX + property)) { + if (typeof prop === 'string' && hasOwnProperty.call(target, _IMMUTABLE_PREFIX + prop)) { return true; } return false;