diff --git a/src/components/ui/VnPaginate.vue b/src/components/ui/VnPaginate.vue index 86918e545..14e3b6420 100644 --- a/src/components/ui/VnPaginate.vue +++ b/src/components/ui/VnPaginate.vue @@ -78,6 +78,7 @@ const arrayData = useArrayData(props.dataKey, { exprBuilder: props.exprBuilder, }); const store = arrayData.store; +const hasMoreData = arrayData.hasMoreData; onMounted(() => { if (props.autoLoad) fetch(); @@ -96,7 +97,7 @@ const addFilter = async (filter, params) => { async function fetch() { await arrayData.fetch({ append: false }); - if (!arrayData.hasMoreData.value) { + if (!hasMoreData.value) { isLoading.value = false; } emit('onFetch', store.data); @@ -109,8 +110,8 @@ async function paginate() { isLoading.value = true; await arrayData.loadMore(); - if (!arrayData.hasMoreData.value) { - if (store.userParamsChanged) arrayData.hasMoreData.value = true; + if (!hasMoreData.value) { + if (store.userParamsChanged) hasMoreData.value = true; store.userParamsChanged = false; endPagination(); return; @@ -131,9 +132,7 @@ function endPagination() { emit('onPaginate'); } async function onLoad(index, done) { - if (!store.data) { - return done(); - } + if (!store.data) return done(); if (store.data.length === 0 || !props.url) return done(false); @@ -141,7 +140,7 @@ async function onLoad(index, done) { await paginate(); let isDone = false; - if (store.userParamsChanged) isDone = !arrayData.hasMoreData.value; + if (store.userParamsChanged) isDone = !hasMoreData.value; done(isDone); } @@ -181,13 +180,12 @@ defineExpose({ fetch, addFilter }); - @@ -195,10 +193,7 @@ defineExpose({ fetch, addFilter }); -
+
diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index 128fe2db1..329d667fb 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -14,7 +14,7 @@ export function useArrayData(key, userOptions) { } const store = arrayDataStore.get(key); - const hasMoreData = ref(false); + const hasMoreData = computed(() => arrayDataStore.hasMoreData); const route = useRoute(); let canceller = null; @@ -96,7 +96,7 @@ export function useArrayData(key, userOptions) { }); const { limit } = filter; - hasMoreData.value = limit && response.data.length >= limit; + arrayDataStore.hasMoreData = limit && response.data.length >= limit; if (append) { if (!store.data) store.data = [];