import {
|
hasOwn
|
} from 'uni-shared'
|
|
export function generateId (vm, parent, version) {
|
if (!vm.$parent) {
|
return '-1'
|
}
|
const vnode = vm.$vnode
|
const context = vnode.context
|
let id = vnode.data.attrs._i
|
if (version && hasOwn(vnode.data, 'key')) { // 补充 key 值
|
id = id + ';' + vnode.data.key
|
}
|
// slot 内的组件,需要补充 context 的 id,否则可能与内部组件索引值一致,导致 id 冲突
|
if (context && context !== parent && context._$id) {
|
if (process.env.NODE_ENV !== 'production') {
|
console.log('generateId:' + context._$id + ';' + parent._$id + ',' + id)
|
}
|
return context._$id + ';' + parent._$id + ',' + id
|
}
|
return parent._$id + ',' + id
|
}
|