Просмотр исходного кода

chore: experimental warnings for reactive props destructure and defineModel

Evan You 3 лет назад
Родитель
Сommit
d40d4a3380

+ 9 - 0
packages/compiler-sfc/src/script/defineModel.ts

@@ -9,6 +9,7 @@ import {
   unwrapTSNode
 } from './utils'
 import { BindingTypes } from '@vue/compiler-dom'
+import { warnOnce } from '../warn'
 
 export const DEFINE_MODEL = 'defineModel'
 
@@ -26,6 +27,14 @@ export function processDefineModel(
   if (!ctx.options.defineModel || !isCallOf(node, DEFINE_MODEL)) {
     return false
   }
+
+  warnOnce(
+    `This project is using defineModel(), which is an experimental ` +
+      ` feature. It may receive breaking changes or be removed in the future, so ` +
+      `use at your own risk.\n` +
+      `To stay updated, follow the RFC at https://github.com/vuejs/rfcs/discussions/503.`
+  )
+
   ctx.hasDefineModelCall = true
 
   const type =

+ 8 - 0
packages/compiler-sfc/src/script/definePropsDestructure.ts

@@ -21,6 +21,7 @@ import { genPropsAccessExp } from '@vue/shared'
 import { isCallOf, resolveObjectKey, unwrapTSNode } from './utils'
 import { ScriptCompileContext } from './context'
 import { DEFINE_PROPS } from './defineProps'
+import { warnOnce } from '../warn'
 
 export function processPropsDestructure(
   ctx: ScriptCompileContext,
@@ -30,6 +31,13 @@ export function processPropsDestructure(
     return
   }
 
+  warnOnce(
+    `This project is using reactive props destructure, which is an experimental ` +
+      ` feature. It may receive breaking changes or be removed in the future, so ` +
+      `use at your own risk.\n` +
+      `To stay updated, follow the RFC at https://github.com/vuejs/rfcs/discussions/502.`
+  )
+
   ctx.propsDestructureDecl = declId
 
   const registerBinding = (