Skip to content

fix(reactivity): handle MaybeDirty recurse#10187

Merged
yyx990803 merged 8 commits into
vuejs:mainfrom
johnsoncodehk:fix-10185
Feb 6, 2024
Merged

fix(reactivity): handle MaybeDirty recurse#10187
yyx990803 merged 8 commits into
vuejs:mainfrom
johnsoncodehk:fix-10185

Conversation

@johnsoncodehk

@johnsoncodehk johnsoncodehk commented Jan 23, 2024

Copy link
Copy Markdown
Member

fix #10185, still have to add a test case done.

@github-actions

github-actions Bot commented Jan 23, 2024

Copy link
Copy Markdown

Size Report

Bundles

File Size Gzip Brotli
runtime-dom.global.prod.js 90.2 kB (-21 B) 34.3 kB (-34 B) 31 kB (+16 B)
vue.global.prod.js 147 kB (-21 B) 53.6 kB (+1 B) 47.9 kB (+60 B)

Usages

Name Size Gzip Brotli
createApp 50.3 kB (-21 B) 19.7 kB (-14 B) 18 kB (+25 B)
createSSRApp 53.6 kB (-21 B) 21 kB (-19 B) 19.1 kB (-3 B)
defineCustomElement 52.6 kB (-21 B) 20.4 kB (-24 B) 18.6 kB (-17 B)
overall 64 kB (-21 B) 24.7 kB (-25 B) 22.4 kB (-53 B)

@johnsoncodehk

Copy link
Copy Markdown
Member Author

/ecosystem-ci run

@vue-bot

vue-bot commented Jan 23, 2024

Copy link
Copy Markdown
Contributor

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools success success
nuxt success success
pinia success success
quasar failure success
radix-vue success success
router success success
test-utils success success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n success success
vue-macros success success
vuetify success success
vueuse success success
vue-simple-compiler success success

@Doctor-wu

Doctor-wu commented Jan 23, 2024

Copy link
Copy Markdown
Member
  it('should trigger effect even computed already maybe dirty', () => {
    const fnSpy = vi.fn()
    const v = ref(0)
    const c1 = computed(() => {
      if (v.value === 0) {
        v.value = 1
      }
      return 'foo'
    })
    const c2 = computed(() => c1.value)

    effect(() => {
      fnSpy()
      c2.value
    })
    expect(fnSpy).toBeCalledTimes(1)
    expect(c1.effect._dirtyLevel).toBe(DirtyLevels.Dirty)
    expect(c2.effect._dirtyLevel).toBe(DirtyLevels.MaybeDirty)
    v.value = 2
    expect(fnSpy).toBeCalledTimes(2)
  })

@johnsoncodehk Here's a minimal test, can't push to this pr so I just provide the code 😂

@johnsoncodehk

Copy link
Copy Markdown
Member Author

/ecosystem-ci run

@vue-bot

vue-bot commented Jan 23, 2024

Copy link
Copy Markdown
Contributor

📝 Ran ecosystem CI: Open

suite result latest scheduled
language-tools success success
nuxt success success
pinia success success
quasar success success
radix-vue success success
router success success
test-utils success success
vant success success
vite-plugin-vue success success
vitepress success success
vue-i18n success success
vue-macros success success
vuetify success success
vueuse success success
vue-simple-compiler success success

@johnsoncodehk johnsoncodehk marked this pull request as ready for review January 23, 2024 04:25
Comment thread packages/reactivity/__tests__/computed.spec.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reactivity regression in 3.14.15

4 participants