jsx-vue2 icon indicating copy to clipboard operation
jsx-vue2 copied to clipboard

fix: add `rawName` to directive parse

Open lecion opened this issue 1 year ago • 0 comments

When Vue normalizeDirectives, it will call getRawDirName to get rawName that is as the unique key of the directive. babel-plugin-transform-vue-jsx does not handle it in a correct way.

function normalizeDirectives (
  dirs: ?Array<VNodeDirective>,
  vm: Component
): { [key: string]: VNodeDirective } {
  const res = Object.create(null)
  if (!dirs) {
    // $flow-disable-line
    return res
  }
  let i, dir
  for (i = 0; i < dirs.length; i++) {
    dir = dirs[i]
    if (!dir.modifiers) {
      // $flow-disable-line
      dir.modifiers = emptyModifiers
    }
    res[getRawDirName(dir)] = dir
    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true)
  }
  // $flow-disable-line
  return res
}

function getRawDirName (dir: VNodeDirective): string {
  return dir.rawName || `${dir.name}.${Object.keys(dir.modifiers || {}).join('.')}`
}

lecion avatar Aug 10 '22 08:08 lecion