当前位置: 首页 > news >正文

无锡高端网站建设机构做网站如何赚钱知乎

无锡高端网站建设机构,做网站如何赚钱知乎,一个域名绑定多个网站吗,上行10m做网站服务前言 功能需求:下拉框中分页加载后端接口返回的人员数据,实现滑动加载更多数据效果,并且可以手动搜索定位数据,此项目使用Vue3 ts elementUi 实现 实现 把此分页滑动加载数据功能封装成vue中的hooks,文件命名为use…

前言

功能需求:下拉框中分页加载后端接口返回的人员数据,实现滑动加载更多数据效果,并且可以手动搜索定位数据,此项目使用Vue3 + ts+ elementUi 实现

实现

把此分页滑动加载数据功能封装成vue中的hooks,文件命名为useMoreUser.ts

import {ref,reactive,nextTick} from 'vue'export  const useMoreUser = () => {const selectMoreData = reactive({page: 0, //当前页loading: false, //loadinghasMore: true, //判断是否还有更多数据selectValue: '', //下拉框选中数据selectOptions: [] //下拉框选项})// 人员列表加载数据列表【newPage: 页数,name: 搜索条件】const loadDataList = async (newPage: number, name?: string = '' ) => {try {selectMoreData.loading = true;//后端接口,入参为搜索条件人员姓名,页数let res = await getUserList(name, newPage); if (newPage === 1) { //初始化selectMoreData.selectOptions = [];}//存储后端接口返回数据selectMoreData.selectOptions.push(...res.rows);//判断是否还有更多数据selectMoreData.hasMore = selectMoreData.selectOptions.length < res.total;selectMoreData.page = newPage;} catch (err) {console.error(err);} finally {selectMoreData.loading = false;}};//加载更多数据const handleLoadMore = async (newPage: number,  name?: string = '' ) => {await loadDataList(newPage,name);};//返回下拉框选项const getList = ()=>{return selectMoreData.selectOptions;}//导出数据方法等return {selectMoreData,getList, loadDataList, handleLoadMore}
}

再继续封装下拉框选项组件 option.vue

<!-- 监听 el-select 的滚动,并提供触底加载数据的回调 -->
<template><el-option ref="el" class="el-select-loading" value=""><template v-if="hasMore"><el-icon class="el-select-loading__icon"><Loading /></el-icon><span class="el-select-loading__tips">{{ loadingText || "正在加载" }}</span></template><template v-else>{{ noMoreText || "到底了~" }}</template></el-option>
</template><script setup lang="ts">import { onMounted, onUnmounted, ref } from "vue";import { ElOption } from "element-plus";interface Props {// 当前页码page: number;// 是否加载中,用来过滤重复的加载loading: boolean;// 加载中的提示文案loadingText?: string;// 是否有更多数据可加载hasMore: boolean;// 没有更多数据的提示文案noMoreText?: string;}const props = defineProps<Props>();interface Emits {(event: "loadMore", data: number): any;}const emit = defineEmits<Emits>();const el = ref<typeof ElOption>();const observer = ref<IntersectionObserver>();// 组件加载成功,监听滚动onMounted(() => {if (!el.value) {return;}const callback: IntersectionObserverCallback = (entries) => {if (props.loading || !props.hasMore || !entries[0].isIntersecting) {return;}emit("loadMore", props.page + 1);};const options: IntersectionObserverInit = {root: el.value.$el.parentElement?.parentElement,rootMargin: "0px 0px 0px 0px",};observer.value = new IntersectionObserver(callback, options);observer.value.observe(el.value.$el);});// 组件卸载成功,取消滚动监听onUnmounted(() => {if (!el.value) {return;}observer.value?.unobserve(el.value.$el);});
</script><style lang="scss" scoped>.el-select-loading {display: flex;align-items: center;justify-content: center;cursor: initial;pointer-events: none;color: var(--el-color-info);font-size: 12px;&__icon {font-size: 16px;animation: rotate 1.5s linear infinite;}&__tips {margin-left: 6px;}@keyframes rotate {from {transform: rotate(0deg);}to {transform: rotate(360deg);}}}
</style>

最后到咱们真正使用页面index.vue,封装时候有些费事,但是使用起来就简单了
template部分

 <el-select class="customSelect" filterable remote :remote-method="remoteMethod"v-model="user" placeholder="请选择人员"style="width: 100%"><el-optionv-for="item in selectMoreData.selectOptions":key="item.userId":label="`${item.userName}`":value="item.userId"><span style="float: left">{{ `${item.userName}` }</span></el-option><ElSelectLoading:page="selectMoreData.page":loading="selectMoreData.loading":hasMore="selectMoreData.hasMore"@loadMore="handleLoadMore"/></el-select>

script部分

<script lang="ts" setup>
import {ref, reactive, onUnmounted, onMounted, nextTick, computed, watch} from 'vue'
import ElSelectLoading from "@/components/Option/option.vue";
import {useMoreUser} from '@/hooks/useMoreUser.ts'
const {selectMoreData, loadDataList, handleLoadMore} = useMoreUser();const user = ref('');
const remoteMethod = (query: string) => {loadDataList(1, query);
}
</script>
http://www.yayakq.cn/news/242072/

相关文章:

  • 美食网站开发的目标免费商城网站
  • 廉政网站 建设需求网站制作详细流程
  • 深圳移动网站建设融水县建设局网站
  • 哪里去找做的好看的网站网站开发推荐书籍
  • 网站设计psdwordpress转换tpecho
  • 一个网站的年维护费投诉百度最有效的电话
  • 营销网站的主题 定位 修改建议swipe类网站
  • 网站如何做360度全景php网站开发实例教程 课件
  • 大型网站多少钱宿州保洁公司有哪些
  • 秦皇岛网站优化旧手机服务器wordpress
  • 旅游网站建设方网站做等保备案
  • 惠州城乡规划建设局网站临沂网站建设模板
  • 温州网站建设成功案例金泉网网站建设
  • 电影网站页面seo设计网名大全
  • 怎么免费做自己的网站禅城网站建设公司价格
  • 诸城 网站 建设网站万能密码修复
  • 企业 门户型网站区别网站界面设计需要首先做市场研究吗
  • 网站seo基础广东省农业农村厅陈东
  • 网站建设单位河南企业建设网站
  • 本地成都网站建设几个小时学wordpress
  • 高端品牌网站开发公司注册资金50万和100万的区别
  • 微模板如何建微网站js做网站预览效果
  • 外包做网站要十几万包装设计流程
  • 如何提高网站收录数下载大连建设网官方网站
  • 花溪村镇建设银行网站网页翻译会被检测到吗
  • 建设公司起名简洁大气网站访问速度优化工具
  • 老板说做个网站我要怎么做怎样做农产品交易平台网站
  • 网站开发企业公司dz动力 wordpress
  • 电商网站开发平台app网站平台搭建
  • 微信平台开发技术安阳企业网站优化排名