util.js 744 字节
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4 5
import {
  hasOwn
} from 'uni-shared'

export function generateId (vm, parent, version) {
fxy060608's avatar
fxy060608 已提交
6 7 8 9 10
  if (!vm.$parent) {
    return '-1'
  }
  const vnode = vm.$vnode
  const context = vnode.context
fxy060608's avatar
fxy060608 已提交
11 12 13 14
  let id = vnode.data.attrs._i
  if (version && hasOwn(vnode.data, 'key')) { // 补充 key 值
    id = id + ';' + vnode.data.key
  }
fxy060608's avatar
fxy060608 已提交
15 16 17
  // slot 内的组件,需要补充 context 的 id,否则可能与内部组件索引值一致,导致 id 冲突
  if (context && context !== parent && context._$id) {
    if (process.env.NODE_ENV !== 'production') {
fxy060608's avatar
fxy060608 已提交
18
      console.log('generateId:' + context._$id + ';' + parent._$id + ',' + id)
fxy060608's avatar
fxy060608 已提交
19
    }
fxy060608's avatar
fxy060608 已提交
20
    return context._$id + ';' + parent._$id + ',' + id
fxy060608's avatar
fxy060608 已提交
21
  }
fxy060608's avatar
fxy060608 已提交
22
  return parent._$id + ',' + id
fxy060608's avatar
fxy060608 已提交
23
}