diff --git a/src/store.ts b/src/store.ts index 62dd41da..7fb214b9 100644 --- a/src/store.ts +++ b/src/store.ts @@ -133,7 +133,7 @@ export function makeObserver(): Observer { } if (newVal !== value) { value = newVal; - // observe(newVal); + observe(newVal); obj.__rev__!++; observer.__rev__++; } diff --git a/tests/store.test.ts b/tests/store.test.ts index b312a1b6..a08c6a85 100644 --- a/tests/store.test.ts +++ b/tests/store.test.ts @@ -190,6 +190,22 @@ describe("observer", () => { expect(observer.__rev__).toBe(1); expect(state.arr.length).toBe(1); }); + + test("reobserve new object values", () => { + const observer = makeObserver(); + const obj: any = { a: 1 }; + observer.observe(obj); + expect(obj.__rev__).toBe(0); + obj.a = { b: 2 }; + expect(observer.__rev__).toBe(1); + expect(obj.__rev__).toBe(1); + expect(obj.a.__rev__).toBe(0); + + obj.a.b = 3; + expect(observer.__rev__).toBe(2); + expect(obj.__rev__).toBe(1); + expect(obj.a.__rev__).toBe(1); + }); }); describe("advanced state properties", () => {