Skip to content

Commit 73e8ec7

Browse files
author
cntchen
committed
fix: add support for jsx camel case event binding
1 parent 75825da commit 73e8ec7

File tree

1 file changed

+9
-1
lines changed
  • packages/babel-plugin-transform-vue-jsx/src

1 file changed

+9
-1
lines changed

packages/babel-plugin-transform-vue-jsx/src/index.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,15 @@ const parseAttributeJSXAttribute = (t, path, attributes, tagName, elementType) =
166166

167167
prefix = prefixes.find(el => name.startsWith(el)) || 'attrs'
168168
name = name.replace(new RegExp(`^${prefix}\-?`), '')
169-
name = name[0].toLowerCase() + name.substr(1)
169+
170+
// in jsx, event binding use Camel case, such as `onClick`, `onMouseDown`;
171+
// in HTML Specification, event binding is all lower case, such as `onclick`, `onmousedown`
172+
// so for `on` and `nativeOn` attribute in jsx, transform `name` to all lower case
173+
if (prefix === 'on' || prefix === 'nativeOn') {
174+
name = name.toLowerCase()
175+
} else {
176+
name = name[0].toLowerCase() + name.substr(1)
177+
}
170178

171179
const valuePath = path.get('value')
172180
let value

0 commit comments

Comments
 (0)