Skip to content

Commit 8049526

Browse files
committed
fix: lost reactivity
1 parent 56c3d35 commit 8049526

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

src/runtime/components/NUsersList.vue

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { onMounted, computed } from 'vue'
2+
import { onMounted, computed, ref } from 'vue'
33
import { useUsers } from '../composables/useUsers'
44
import { defaultDisplayFields, defaultFieldLabels, type User } from 'nuxt-users/utils'
55
@@ -20,34 +20,34 @@ const emit = defineEmits<{
2020
}>()
2121
2222
// Initialize the composable state as null initially
23-
let usersComposable: ReturnType<typeof useUsers> | null = null
23+
const usersComposable = ref<ReturnType<typeof useUsers> | null>(null)
2424
2525
// Create computed properties that safely access the composable
26-
const users = computed(() => usersComposable?.users.value ?? [])
27-
const pagination = computed(() => usersComposable?.pagination.value ?? null)
28-
const loading = computed(() => usersComposable?.loading.value ?? false)
29-
const error = computed(() => usersComposable?.error.value ?? null)
26+
const users = computed(() => usersComposable.value?.users ?? [])
27+
const pagination = computed(() => usersComposable.value?.pagination ?? null)
28+
const loading = computed(() => usersComposable.value?.loading ?? false)
29+
const error = computed(() => usersComposable.value?.error ?? null)
3030
31-
onMounted(() => {
31+
onMounted(async () => {
3232
// Initialize the composable only after the component is mounted
33-
usersComposable = useUsers()
33+
usersComposable.value = useUsers()
3434
3535
// Fetch users only if the list is empty to avoid unnecessary fetches
3636
if (users.value.length === 0) {
37-
usersComposable.fetchUsers()
37+
usersComposable.value?.fetchUsers()
3838
}
3939
})
4040
4141
const handleDelete = (user: User) => {
42-
if (usersComposable) {
43-
usersComposable.removeUser(user.id)
42+
if (usersComposable.value) {
43+
usersComposable.value?.removeUser(user.id)
4444
}
4545
emit('delete', user)
4646
}
4747
4848
const handleFetchUsers = (page?: number, limit?: number) => {
49-
if (usersComposable) {
50-
usersComposable.fetchUsers(page, limit)
49+
if (usersComposable.value) {
50+
usersComposable.value.fetchUsers(page, limit)
5151
}
5252
}
5353
</script>

src/runtime/components/NUsersUserCard.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { computed, onMounted } from 'vue'
2+
import { computed, onMounted, nextTick, ref } from 'vue'
33
import { useAuthentication } from '../composables/useAuthentication'
44
import { useRuntimeConfig } from '#imports'
55
import { defaultDisplayFields, defaultFieldLabels, type User } from 'nuxt-users/utils'
@@ -24,15 +24,15 @@ const emit = defineEmits<{
2424
2525
const { public: { nuxtUsers } } = useRuntimeConfig()
2626
27-
// Initialize the custom composable state as null initially
28-
let authComposable: ReturnType<typeof useAuthentication> | null = null
27+
// Initialize the composable state as null initially to avoid build-time issues
28+
const authComposable = ref<ReturnType<typeof useAuthentication> | null>(null)
2929
3030
// Create computed property that safely accesses the composable
31-
const currentUser = computed(() => authComposable?.user.value ?? null)
31+
const currentUser = computed(() => authComposable.value?.user ?? null)
3232
33-
onMounted(() => {
34-
// Initialize the custom composable only after the component is mounted
35-
authComposable = useAuthentication()
33+
onMounted(async () => {
34+
// Initialize the composable only after the component is mounted
35+
authComposable.value = useAuthentication()
3636
})
3737
3838
const canEdit = computed(() => {

0 commit comments

Comments
 (0)