// useClient.js
import { ref, onMounted, onUnmounted } from "vue";
export function useClient() {
//获取系统信息
function getSystemInfo() {
let data = {};
uni.getSystemInfo({
success: function (res) {
data = res;
},
});
return data;
}
// 获取dom信息
function getDomInfo(selector, instance) {
return new Promise((resolve, reject) => {
let height = 0;
let query = wx.createSelectorQuery();
if (instance) {
query = wx.createSelectorQuery().in(instance);
}
query
.select(selector)
.boundingClientRect((data) => {
if (data) {
resolve(data);
}
})
.exec();
});
}
return { getSystemInfo, getDomInfo };
}
使用示例:
// vue页面
<script setup>
import { useClient } from "@/utils/useClient";
// 当组件挂载完成后
let scrollHeight = ref(0);
onMounted(async () => {
let myTabDom = await useClient().getDomInfo(".my_tab");
scrollHeight.value = `100vh - ${ myTabDom.height }px`;
});
</script>