]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(runtime-dom): avoid form attribtue tag check
authorEvan You <yyx990803@gmail.com>
Wed, 24 Feb 2021 20:06:51 +0000 (15:06 -0500)
committerEvan You <yyx990803@gmail.com>
Wed, 24 Feb 2021 20:06:51 +0000 (15:06 -0500)
the tag check while technically stricter, is not really necessary
and introduces too much weight

packages/runtime-dom/src/patchProp.ts
packages/shared/src/domTagConfig.ts

index 6842b98c2b0f97e534c66ca96564413d500a115d..b7ae61e214450aa52312a8085c4f3a90980449b6 100644 (file)
@@ -3,13 +3,7 @@ import { patchStyle } from './modules/style'
 import { patchAttr } from './modules/attrs'
 import { patchDOMProp } from './modules/props'
 import { patchEvent } from './modules/events'
-import {
-  isOn,
-  isString,
-  isFunction,
-  isModelListener,
-  isFormTag
-} from '@vue/shared'
+import { isOn, isString, isFunction, isModelListener } from '@vue/shared'
 import { RendererOptions } from '@vue/runtime-core'
 
 const nativeOnRE = /^on[a-z]/
@@ -99,9 +93,9 @@ function shouldSetAsProp(
     return false
   }
 
-  // #1787, #2840 the form property is readonly and can only be set as an
-  // attribute using a string value
-  if (key === 'form' && isFormTag(el.tagName)) {
+  // #1787, #2840 form property on form elements is readonly and must be set as
+  // attribute.
+  if (key === 'form') {
     return false
   }
 
@@ -110,13 +104,13 @@ function shouldSetAsProp(
     return false
   }
 
-  // native onclick with string value, must be set as attribute
-  if (nativeOnRE.test(key) && isString(value)) {
+  // #2766 <textarea type> must be set as attribute
+  if (key === 'type' && el.tagName === 'TEXTAREA') {
     return false
   }
 
-  // DOMprop "type" is readonly on textarea elements: https://github.com/vuejs/vue-next/issues/2766
-  if (key === 'type' && el.tagName === 'TEXTAREA') {
+  // native onclick with string value, must be set as attribute
+  if (nativeOnRE.test(key) && isString(value)) {
     return false
   }
 
index d18e392b55b2d88d8d1511e3fa69cb09726b78dd..bbacdc12535db32f4ad6d9289171bc11b85697e3 100644 (file)
@@ -30,11 +30,6 @@ const SVG_TAGS =
 const VOID_TAGS =
   'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr'
 
-const FORM_TAGS =
-  'button,datalist,fieldset,input,keygen,label,legend,meter,optgroup,option,' +
-  'output,progress,select,textarea'
-
 export const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS)
 export const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS)
 export const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS)
-export const isFormTag = /*#__PURE__*/ makeMap(FORM_TAGS, true)