hookehuyr

refactor(usePagination): 简化分页逻辑,移除冗余导航配置

移除当前页导航配置的中间变量 current_nav,直接在遇到分页符时应用其属性
最后一页若无分页符则使用默认导航配置
......@@ -67,24 +67,20 @@ export function usePagination(formDataRef, options = {}) {
const pages = []
const navs = []
let cur = []
// 当前页导航配置,默认值;当遇到 paginator 时更新为“下一页”的导航
let current_nav = normalizePaginatorProps()
// 连续的 paginator 需要忽略,避免出现空分页
let last_was_paginator = false
formDataRef.value.forEach(item => {
const tag = item.component_props?.tag
// 分隔符 paginator 作为分页分组边界,同时决定后续一页的导航配置
// 分隔符 paginator 作为分页分组边界;其属性应用于“当前页”(它所在页的页尾)
if (tag === 'paginator') {
// 连续分页符:忽略后者,保留先前设置,避免空页与属性覆盖
if (last_was_paginator) return
// 如果当前已有内容,先把“这一页”收束,并使用当前导航配置
// 若当前页有内容,则用此分页符的属性收束为一页
if (cur.length) {
pages.push(cur)
navs.push(current_nav)
navs.push(normalizePaginatorProps(item.component_props))
cur = []
}
// 更新“下一页”的导航配置为本分页符设置
current_nav = normalizePaginatorProps(item.component_props)
last_was_paginator = true
return
}
......@@ -93,10 +89,10 @@ export function usePagination(formDataRef, options = {}) {
last_was_paginator = false
})
// 收尾:最后一页
// 收尾:最后一页(没有尾随 paginator 时使用默认导航)
if (cur.length) {
pages.push(cur)
navs.push(current_nav)
navs.push(normalizePaginatorProps())
}
// 若未显式分页,仅按固定大小分片,并为每一页设置默认导航
......