From eaafff518c8f08d4bba42b4932a429cd2e4ca143 Mon Sep 17 00:00:00 2001 From: James Zhan Date: Tue, 22 Oct 2024 21:45:24 +1100 Subject: [PATCH 1/3] inheritance should work with computed --- .../decorators_20223/stage3-decorators.ts | 19 +++++++++++++++++++ packages/mobx/src/types/computedannotation.ts | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts b/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts index 9f2420d6e..c9042ddb3 100644 --- a/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts +++ b/packages/mobx/__tests__/decorators_20223/stage3-decorators.ts @@ -1115,3 +1115,22 @@ test(`decorated field can be inherited, but doesn't inherite the effect of decor const subStore = new SubStore() expect(isAction(subStore.action)).toBe(false) }) + +test(`inheritance should work with computed`, () => { + class Store { + @computed + get getNumber() { + return 1 + } + } + + class SubStore extends Store { + @computed + override get getNumber() { + return super.getNumber + 1 + } + } + + const store = new SubStore() + expect(store.getNumber).toBe(2) +}) diff --git a/packages/mobx/src/types/computedannotation.ts b/packages/mobx/src/types/computedannotation.ts index dd398741f..66fcfc614 100644 --- a/packages/mobx/src/types/computedannotation.ts +++ b/packages/mobx/src/types/computedannotation.ts @@ -64,11 +64,11 @@ function decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorCon options.name ||= __DEV__ ? `${adm.name_}.${key.toString()}` : `ObservableObject.${key.toString()}` - adm.values_.set(key, new ComputedValue(options)) + adm.values_.set(get, new ComputedValue(options)) }) return function () { - return this[$mobx].getObservablePropValue_(key) + return this[$mobx].getObservablePropValue_(get) } } From 99bb6e95380d646c2b1244f5510c2737033e866f Mon Sep 17 00:00:00 2001 From: James Zhan Date: Tue, 22 Oct 2024 22:12:31 +1100 Subject: [PATCH 2/3] fix --- packages/mobx/src/types/computedannotation.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mobx/src/types/computedannotation.ts b/packages/mobx/src/types/computedannotation.ts index 66fcfc614..728be958c 100644 --- a/packages/mobx/src/types/computedannotation.ts +++ b/packages/mobx/src/types/computedannotation.ts @@ -64,6 +64,7 @@ function decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorCon options.name ||= __DEV__ ? `${adm.name_}.${key.toString()}` : `ObservableObject.${key.toString()}` + adm.values_.set(key, new ComputedValue(options)) adm.values_.set(get, new ComputedValue(options)) }) From bee3e326b9147634eab3499e4219a1560dcd4760 Mon Sep 17 00:00:00 2001 From: James Zhan Date: Tue, 22 Oct 2024 22:18:25 +1100 Subject: [PATCH 3/3] improve --- packages/mobx/src/types/computedannotation.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/mobx/src/types/computedannotation.ts b/packages/mobx/src/types/computedannotation.ts index 728be958c..b6d792688 100644 --- a/packages/mobx/src/types/computedannotation.ts +++ b/packages/mobx/src/types/computedannotation.ts @@ -64,8 +64,9 @@ function decorate_20223_(this: Annotation, get, context: ClassGetterDecoratorCon options.name ||= __DEV__ ? `${adm.name_}.${key.toString()}` : `ObservableObject.${key.toString()}` - adm.values_.set(key, new ComputedValue(options)) - adm.values_.set(get, new ComputedValue(options)) + const computedValue = new ComputedValue(options) + adm.values_.set(key, computedValue) + adm.values_.set(get, computedValue) }) return function () {