最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp自定義下拉刷新組件項目實踐總結(jié)分析

 更新時間:2023年09月18日 09:06:03   作者:MarkGuan  
在日常的開發(fā)過程中,我們經(jīng)常遇到下拉刷新的場景,很方便的刷新游覽的內(nèi)容,在此實現(xiàn)了一個下拉刷新的自定義組件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

準(zhǔn)備工作

  • components新建一個q-pull文件夾,并新建一個q-pull.vue的組件;
  • 按照前面文章所說的頁面結(jié)構(gòu),編寫好預(yù)定的自定義下拉刷新組件頁面;

原理分析

自定義下拉刷新就是在之前自定義滑動觸摸組件的基礎(chǔ)上,在頂部增加一個刷新的模塊。

在頁面下拉的時候,判斷是否為下滑的方向,如果是就獲取數(shù)據(jù),數(shù)據(jù)請求完成后,隱藏刷新模塊即可。

組件實現(xiàn)

準(zhǔn)備工作和原理分析完成后,接下來寫一個簡單的組件。

模板部分

這部分主要是顯示動畫、提示、顏色、背景色以及控制是否展示頁面。

<view class="pull">
  <view
    id="pull-container"
    :style="pullInfo.style"
    ref="pullBox"
    @touchstart="handlerStart"
    @touchmove="handlerMove"
    @touchend="handlerEnd">
    <view class="pull-head">
      <view class="pull-text"> {{ pullInfo.tipText }} </view>
    </view>
    <view class="pull-body">
      <slot></slot>
    </view>
  </view>
</view>

樣式部分

.pull {
  position: relative;
  width: 100%;
  height: 100%;
  #pull-container {
    position: relative;
    width: 100%;
    height: 100%;
    .pull-head {
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      text-align: center;
      transform: translateY(-100%);
      .pull-text {
        padding: 30rpx 0;
        color: $mainColor;
        font-size: 26rpx;
        background: $f8;
        font-weight: bold;
      }
    }
    .pull-body {
      box-sizing: border-box;
      padding: 60rpx;
      text-align: left;
      font-size: 28rpx;
    }
  }
}

腳本部分

  • 引入依賴
// 導(dǎo)入依賴
import { reactive } from "vue";
// 頁面屬性
// 下拉刷新
const pullInfo = reactive({
  style: {},
  tipText: "",
  startY: 0,
  deltaY: 0,
  slowY: 0,
  resetTimer: null,
  resetTime: 500,
});
// 發(fā)送事件
const emits = defineEmits(["load"]);
  • 開始下拉
function handlerStart(e) {
  let startY = e.touches[0].pageY;
  pullInfo.style = "transition: transform 0s";
}
  • 下拉移動
function handlerMove(e) {
  e.preventDefault();
  pullInfo.deltaY = e.touches[0].pageY - pullInfo.startY;
  if (pullInfo.deltaY > 0) {
    pullInfo.tipText = "下拉刷新";
    if (pullInfo.deltaY > 60) {
      pullInfo.tipText = "松開刷新";
      pullInfo.slowY = (pullInfo.deltaY - 60) * 0.2 + 60;
    } else {
      pullInfo.slowY = pullInfo.deltaY;
    }
    pullInfo.style = `transform: translateY(${pullInfo.slowY * 2}rpx)`;
  }
}
  • 下拉結(jié)束
function handlerEnd(e) {
  pullInfo.style = "transition: transform .5s";
  if (pullInfo.deltaY > 60) {
    pullInfo.tipText = "正在加載中...";
    pullInfo.style = "transform: translateY(95rpx)";
    emits("load");
  } else {
    pullInfo.style = "transform: translateY(0)";
  }
}
  • 復(fù)位
function reset() {
  pullInfo.resetTimer = setTimeout(() => {
    pullInfo.tipText = "刷新成功!";
    pullInfo.resetTimer = setTimeout(() => {
      pullInfo.style = "transform: translateY(0)";
      clearTimeout(pullInfo.resetTimer);
    }, pullInfo.resetTime);
  }, pullInfo.resetTime);
}

實戰(zhàn)演練

模板使用

<q-pull
  ref="myPull"
  @load="loadSet">
  <!-- 插槽內(nèi)容 -->
  <view>
    <view
      v-for="(item, index) in pull.list"
      :key="index"
      >{{item}}</view
    >
  </view>
</q-pull>

腳本使用

定義數(shù)據(jù)

// 列表
const pull = reactive({
  list: [1, 2, 3, 4, 5, 6],
});

加載內(nèi)容

function loadSet() {
  // 請求數(shù)據(jù)
  setTimeout(() => {
    let num = Math.random() * 100;
    pull.list.push(num);
    if (proxy.$refs.myPull) {
      proxy.$refs.myPull.reset();
    }
  }, 3000);
}

內(nèi)置刷新

uniapp 也為我們開發(fā)者準(zhǔn)備了內(nèi)置下拉刷新,一起去看看如何使用吧。

引入配置

pages.json文件中找到需要下拉刷新的頁面中加入以下配置。

{
  "path": "pages/index/pull-refresh",
  "style": {
    "navigationBarTitleText": "下拉刷新",
    "enablePullDownRefresh": true
  }
}

可以在 APP 端自定義樣式,在enablePullDownRefresh下面添加如下配置:

{
  //...
  "app-plus": {
    "pullToRefresh": {
      "support": true,
      "color": "#24afd6",
      "style": "circle"
    }
  }
  // ...
}

頁面引入

import { onPullDownRefresh } from "@dcloudio/uni-app";

監(jiān)聽下拉刷新

// 監(jiān)聽下拉刷新
onPullDownRefresh(() => {
  // 開始下拉刷新
  uni.startPullDownRefresh();
  // 獲取數(shù)據(jù)
  getData();
});

停止下拉刷新

// 獲取數(shù)據(jù)
function getData() {
  console.log("獲取數(shù)據(jù)!");
  setTimeout(() => {
    uni.stopPullDownRefresh();
  }, 3000);
}

案例展示

自定義組件

h5 端效果

小程序端效果

APP 端效果

內(nèi)置下拉刷新

h5 端效果

小程序端效果

APP 端效果

以上就是uniapp自定義下拉刷新組件項目實踐總結(jié)分析的詳細(xì)內(nèi)容,更多關(guān)于uniapp自定義下拉刷新組件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript實現(xiàn)數(shù)字前補“0”的五種方法示例

    JavaScript實現(xiàn)數(shù)字前補“0”的五種方法示例

    這篇文章主要介紹了JavaScript實現(xiàn)數(shù)字前補“0”的五種方法,結(jié)合具體實例形式分析了javascript數(shù)字前補0的相關(guān)操作技巧,涉及javascript字符串遍歷、迭代、截取、構(gòu)造等操作,需要的朋友可以參考下
    2019-01-01
  • 今天,小程序正式支持 SVG

    今天,小程序正式支持 SVG

    這篇文章主要介紹了小程序支持SVG,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • js實現(xiàn)正方形顏色從下往上升的效果

    js實現(xiàn)正方形顏色從下往上升的效果

    大家有沒有看到類似顏色從下往上升的效果,在本例將與大家介紹下此效果的具體實現(xiàn)
    2014-08-08
  • ajax跨域調(diào)用webservice的實現(xiàn)代碼

    ajax跨域調(diào)用webservice的實現(xiàn)代碼

    這篇文章主要介紹了 ajax跨域調(diào)用webservice服務(wù)例子和理解,最近ajax訪問webservice遇到跨域的問題,網(wǎng)上搜索資料,總結(jié)如下
    2016-05-05
  • js cookie實現(xiàn)記住密碼功能

    js cookie實現(xiàn)記住密碼功能

    這篇文章主要為大家詳細(xì)介紹了js cookie實現(xiàn)記住密碼功能的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • js和jquery判斷數(shù)據(jù)類型的4種方法總結(jié)

    js和jquery判斷數(shù)據(jù)類型的4種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于js和jquery判斷數(shù)據(jù)類型的4種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 解決echarts官網(wǎng)打不開訪問失敗的問題

    解決echarts官網(wǎng)打不開訪問失敗的問題

    這篇文章主要介紹了解決echarts官網(wǎng)打不開訪問失敗的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • nodejs分離html文件里面的js和css的方法

    nodejs分離html文件里面的js和css的方法

    這篇文章主要介紹了nodejs分離html文件里面的js和css的方法,本文需要分離出一個html 文件里面的script 和style 里面的內(nèi)容,然后單獨生成js文件和css 文件,感興趣的可以了解一下
    2019-04-04
  • JavaScript Archive Network 集合

    JavaScript Archive Network 集合

    JavaScript Archive Network 集合...
    2007-05-05
  • js no-repeat寫法 背景不重復(fù)

    js no-repeat寫法 背景不重復(fù)

    js控制背景不重復(fù)的代碼
    2009-03-03

最新評論

安达市| 垦利县| 大埔县| 双峰县| 吉林市| 海伦市| 巴东县| 南丹县| 南丹县| 洪江市| 山阴县| 峡江县| 华坪县| 南丹县| 迁安市| 甘泉县| 胶州市| 鸡西市| 琼海市| 离岛区| 花莲县| 沂源县| 孟州市| 延庆县| 安岳县| 岫岩| 依兰县| 岐山县| 定陶县| 花垣县| 德阳市| 凤凰县| 敦煌市| 文成县| 南溪县| 丰宁| 武强县| 平远县| 洪洞县| 彩票| 萍乡市|