Files

24 lines
805 B
JavaScript
Raw Permalink Normal View History

/**
* 微信小程序 v-for :key 仅支持简单属性访问不支持模板表达式
* JS 中为列表项预生成 _wxKey 模板使用 :key="item._wxKey"
*/
export function withWxKey(list, idField = 'id', fallbackPrefix = 'i') {
return (list || []).map((item, index) => ({
...item,
_wxKey: item[idField] != null && item[idField] !== ''
? String(item[idField])
: `${fallbackPrefix}${index}`,
}))
}
/** 单条消息/列表项补全 _wxKey用于 push、$set 等增量更新) */
export function ensureWxKey(item, idField = 'id', fallback) {
if (!item || typeof item !== 'object') return item
if (item._wxKey != null && item._wxKey !== '') return item
const id = item[idField]
return {
...item,
_wxKey: id != null && id !== '' ? String(id) : String(fallback),
}
}