list-view.uvue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <cl-page>
  3. <view class="page">
  4. <view class="p-3 pb-0">
  5. <demo-item>
  6. <cl-text
  7. >采用虚拟列表技术实现高性能渲染,支持海量数据无限滚动,当前演示数据规模:{{
  8. data.length
  9. }}条</cl-text
  10. >
  11. </demo-item>
  12. </view>
  13. <view class="list">
  14. <cl-list-view
  15. :data="data"
  16. :pt="{
  17. indexBar: {
  18. className: '!fixed'
  19. },
  20. itemHover: {
  21. className: 'bg-gray-200'
  22. }
  23. }"
  24. >
  25. </cl-list-view>
  26. </view>
  27. </view>
  28. </cl-page>
  29. </template>
  30. <script lang="ts" setup>
  31. import { request } from "@/cool";
  32. import DemoItem from "../components/item.uvue";
  33. import { useListView, useUi, type ClListViewItem } from "@/uni_modules/cool-ui";
  34. import { ref } from "vue";
  35. const ui = useUi();
  36. const data = ref<ClListViewItem[]>([]);
  37. onReady(() => {
  38. ui.showLoading();
  39. request<UTSJSONObject[]>({
  40. url: "https://unix.cool-js.com/data/pca_flat.json"
  41. })
  42. .then((res) => {
  43. data.value = useListView(res);
  44. })
  45. .catch((err) => {
  46. console.error(err);
  47. })
  48. .finally(() => {
  49. ui.hideLoading();
  50. });
  51. });
  52. </script>
  53. <style lang="scss" scoped>
  54. .page {
  55. height: 100%;
  56. .list {
  57. flex: 1;
  58. }
  59. }
  60. </style>