فهرست منبع

fix(runtime-core): properly merge unmounted and beforeUnmount options (#4447)

laineus 4 سال پیش
والد
کامیت
741d3b36f2
2فایلهای تغییر یافته به همراه11 افزوده شده و 1 حذف شده
  1. 9 1
      packages/runtime-core/__tests__/apiOptions.spec.ts
  2. 2 0
      packages/runtime-core/src/componentOptions.ts

+ 9 - 1
packages/runtime-core/__tests__/apiOptions.spec.ts

@@ -1265,14 +1265,22 @@ describe('api: options', () => {
 
     test('this.$options[lifecycle-name]', () => {
       const mixin = {
-        mounted() {}
+        mounted() {},
+        beforeUnmount() {},
+        unmounted() {}
       }
       createApp({
         mixins: [mixin],
         mounted() {},
+        beforeUnmount() {},
+        unmounted() {},
         created() {
           expect(this.$options.mounted).toBeInstanceOf(Array)
           expect(this.$options.mounted.length).toBe(2)
+          expect(this.$options.beforeUnmount).toBeInstanceOf(Array)
+          expect(this.$options.beforeUnmount.length).toBe(2)
+          expect(this.$options.unmounted).toBeInstanceOf(Array)
+          expect(this.$options.unmounted.length).toBe(2)
         },
         render: () => null
       }).mount(nodeOps.createElement('div'))

+ 2 - 0
packages/runtime-core/src/componentOptions.ts

@@ -1015,7 +1015,9 @@ export const internalOptionMergeStrats: Record<string, Function> = {
   beforeUpdate: mergeAsArray,
   updated: mergeAsArray,
   beforeDestroy: mergeAsArray,
+  beforeUnmount: mergeAsArray,
   destroyed: mergeAsArray,
+  unmounted: mergeAsArray,
   activated: mergeAsArray,
   deactivated: mergeAsArray,
   errorCaptured: mergeAsArray,