Skip to content

Commit 4f022b2

Browse files
committed
feat(hooks): 增加布尔,loading相关hooks
1 parent c6dd8db commit 4f022b2

File tree

4 files changed

+58
-8
lines changed

4 files changed

+58
-8
lines changed

src/hook/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
export * from './useAppRouter';
2+
export * from './useBoolean';
3+
export * from './useLoading';

src/hook/useBoolean.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { ref } from 'vue';
2+
3+
/**
4+
* boolean组合式函数
5+
* @param initValue 初始值
6+
*/
7+
export function useBoolean(initValue = false) {
8+
const bool = ref(initValue);
9+
10+
function setBool(value: boolean) {
11+
bool.value = value;
12+
}
13+
function setTrue() {
14+
setBool(true);
15+
}
16+
function setFalse() {
17+
setBool(false);
18+
}
19+
function toggle() {
20+
setBool(!bool.value);
21+
}
22+
23+
return {
24+
bool,
25+
setBool,
26+
setTrue,
27+
setFalse,
28+
toggle,
29+
};
30+
}

src/hook/useLoading.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { useBoolean } from './useBoolean';
2+
3+
export function useLoading(initValue = false) {
4+
const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean();
5+
6+
return {
7+
loading,
8+
startLoading,
9+
endLoading,
10+
};
11+
}

src/views/list/commonList/index.vue

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,25 @@
44
<n-grid :x-gap="24" :cols="23">
55
<n-gi :span="5">
66
<n-grid :cols="5">
7-
<n-grid-item :span="1" class="flex-center justify-start">条件1</n-grid-item>
7+
<n-grid-item :span="1" class="flex-center justify-start">姓名</n-grid-item>
88
<n-grid-item :span="4"><n-input v-model:value="model.condition_1" placeholder="Input" /></n-grid-item>
99
</n-grid>
1010
</n-gi>
1111
<n-gi :span="5">
1212
<n-grid :cols="5">
13-
<n-grid-item :span="1" class="flex-center">条件2</n-grid-item>
13+
<n-grid-item :span="1" class="flex-center">年龄</n-grid-item>
1414
<n-grid-item :span="4"><n-input v-model:value="model.condition_2" placeholder="Input" /></n-grid-item>
1515
</n-grid>
1616
</n-gi>
1717
<n-gi :span="5">
1818
<n-grid :cols="5">
19-
<n-grid-item :span="1" class="flex-center">条件3</n-grid-item>
19+
<n-grid-item :span="1" class="flex-center">性别</n-grid-item>
2020
<n-grid-item :span="4"><n-input v-model:value="model.condition_3" placeholder="Input" /></n-grid-item>
2121
</n-grid>
2222
</n-gi>
2323
<n-gi :span="5">
2424
<n-grid :cols="5">
25-
<n-grid-item :span="1" class="flex-center">条件4</n-grid-item>
25+
<n-grid-item :span="1" class="flex-center">地址</n-grid-item>
2626
<n-grid-item :span="4"><n-input v-model:value="model.condition_4" placeholder="Input" /></n-grid-item>
2727
</n-grid>
2828
</n-gi>
@@ -56,8 +56,8 @@
5656
下载
5757
</n-button>
5858
</div>
59-
<n-data-table :bordered="false" :columns="columns" :data="listData" />
60-
<Pagination :count="0" @change="changePage" />
59+
<n-data-table :columns="columns" :data="listData" :loading="loading" />
60+
<Pagination :count="100" @change="changePage" />
6161
</n-space>
6262
</n-card>
6363
</n-space>
@@ -68,7 +68,9 @@ import { onMounted, ref, h } from 'vue';
6868
import { fetchUserList } from '~/src/service/api/mock';
6969
import type { DataTableColumns } from 'naive-ui';
7070
import { NButton, NPopconfirm, NSpace, NSwitch, NTag } from 'naive-ui';
71+
import { useLoading } from '@/hook';
7172
73+
const { loading, startLoading, endLoading } = useLoading(false);
7274
const model = ref({
7375
condition_1: '',
7476
condition_2: '',
@@ -164,10 +166,15 @@ interface UserList {
164166
const listData = ref<UserList[]>([]);
165167
166168
onMounted(() => {
167-
fetchUserList().then((res) => {
169+
getUserList();
170+
});
171+
async function getUserList() {
172+
startLoading();
173+
await fetchUserList().then((res) => {
168174
listData.value = res.data;
175+
endLoading();
169176
});
170-
});
177+
}
171178
function changePage(page: number, size: number) {
172179
window.$message.success(`分页器:${page},${size}`);
173180
}

0 commit comments

Comments
 (0)