データ処理の詳細をリフレッシュし、キープアライブを使用するvue-上の位置をスクロールするには、ドロップダウンリスト

[はじめに]

  プロジェクトリストページで遭遇VUEのプロセスを使用する場合は、いくつかの詳細は、後にコードを最適化するために、ここにまとめるために、注意を払う必要があります。次のように:

  1. LoadMore成分中のミント-UI上のプルダウンリフレッシュは、LACは、より多くの方法をアップロード誘発しないことがあります。スムーズな転がりはありませんIOS。

  詳細にリスト(要求されたデータ・ページのリスト)2.、リターン、リストページには、前のスクロール位置を覚えて、以前のデータを覚えていますが、別のページからのリストページにする、あなたはそれを更新する必要があります。(詩:VUE以降のリリースが自動的に記録され、処理されたキープアライブページのスクロールバーになりそうです)

 

結果を達成するために[]が必要

  このデモでは、次のような効果を実現します。

  

 

アイデアの[]実現

  LoadMoreアセンブリ1.ミント-UI、ドロップダウンリフレッシュタイマー遅延シミュレーション。

  2.キープアライブページBが真である、このページのルーティングを決定するためのフックメソッドは、ページがCから返された場合、リストページに入り、そこからページがあり、そしてBは、データをリフレッシュしませんしましょう。それは他のページから来ましたBは、データを更新してみましょう。Cならば、> Cプロセス - - > B - これが可能に> B、そしてBは、他のページには、それがネイティブアプリケーションページジャンプのようなものだ、Bにデータをリロードします、変更されません。

 

[詳細]対処する必要があります

  loadMoreの注目で使用される成分の1ミント-UI番号。

  2.別のページに基づいてデータをリフレッシュ活性化しました。

  3.ページにvuexストレージのB、Cのページを使用して、スクロールバーの位置に。

 

[関連コード】

  loadmore成分1.ミント-UIそれ以外の場合は時々始め下にスライドさせないで、時には複数の負荷方法を誘発しない(問題を摺動し、その外層をラップする必要があり、その高さを設定します)複数のトリガ方法をロードします。次のように:

コードをコピー
    <DIV CLASS = "コンテンツ"スタイル= "{高さ:contentH + 'ピクセル'}" REF = "ラッパー" @スクロール= "scrollEvent()"> 
      <Loadmoreクラス= "LoadMore":トップメソッド= "loadTop" :ボトム方式は、= "loadBottom" REF = "loadmore"> 
        "dataArrayで(インデックス、elemは)" <DIV CLASS = "項目" V-用= @ = "によってitemClick(インデックス、elemは)">をクリックし
          <Pクラス= "ITEMP">アイテム_ {{索引}} </ P> 
        </ div> 
      </ Loadmore> 
    </ div>
コードをコピー

  その後、変数の割り当てを次のcontentH

マウントされた(){ 
    //ミント・組立に必要なパッケージloadmoreのUI、およびコンテンツは、より多くのようにロードする前に、小包の高さよりも高い場合には、指定された高さにラップ層
    this.contentH = document.documentElement.clientHeight -この$。 。refs.wrapper.getBoundingClientRect()トップ; 
  }

  アナログの更新はドロップダウン次のように:

コードをコピー
    // 下拉刷新
    loadTop() {
      let that = this;
      setTimeout(function() {
        that.dataArray = [0, 1, 2, 3, 4, 5];
        that.$refs.loadmore.onTopLoaded();
      }, 1500);
    },
    // 上拉加载更多
    loadBottom() {
      let that = this;
      setTimeout(function() {

        let tempArray = [];
        let lastItem = that.dataArray[that.dataArray.length - 1];
        for (let i = 0; i < 6; i ++) {
          that.dataArray.push(i + lastItem + 1);
        }
        that.$refs.loadmore.onBottomLoaded();
      }, 1500);
    }
コードをコピー

 

  2. 在 B 的路由钩子中用变量记录来自哪个页面。

コードをコピー
  beforeRouteEnter(to, from, next) {

    if (from.name != 'C') {
      isFromC = false;
    } else {
      isFromC = true;
    }

    next();
  }
コードをコピー

 

  3. vuex中记录 B 页面滚动条位置

コードをコピー
const state = {
  pageYOffset: 0
}

const mutations = {
  setPageYOffset(state, val) {
    state.pageYOffset = val;
  }
}

export default new Vuex.Store({
  state, mutations
})
コードをコピー

 

  4. 进入C页面前,保存滚动条位置

コードをコピー
    itemClick(item, index) { // 进入C页面
      // 保存滚动条位置
      this.$store.commit('setPageYOffset', this.$refs.wrapper.scrollTop);
      this.$router.push({
        name: 'C',
        params: {
          item: item,
          index: index
        }
      });
    }
コードをコピー

 

  5. 在activated方法中处理滚动条位置及数据初始化。

コードをコピー
  activated() {
    if (isFromC) { // 来自C页面
      this.$refs.wrapper.scrollTop = this.$store.state.pageYOffset;

    } else { // 滚动到最顶,数据初始化
      this.$refs.wrapper.scrollTop = 0;

      this.dataArray = [0, 1, 2, 3, 4, 5];
    }
  }
コードをコピー

 

  6. 在ios上滑动不流畅样式设置处理,即 -webkit-overflow-scrolling: touch

.content { 
  マージントップ:49px; 
  オーバーフロー-Y:スクロール。
  -webkit-オーバーフロースクロール:タッチ。
}

 

[拡張]

  キープアライブ経路を使用して、他のより複雑なページバッファを処理することができ、ページバッファ情報は一時的なもの、および、ルーティングロジックフック関数処理データによりクリアすることができます。これは、もはやデータ処理周りのページにジャンプするので1ページのアプリケーションを心配しません。すなわち、同様のデータは、プッシュの状態をシミュレートし、ページ変更ネイティブアプリを開くことができます。

 

【demo地址】

   https://github.com/LiJinShi/vue_keepAlive

 

オリジナル:https://www.cnblogs.com/buerjj/p/8405443.html

おすすめ

転載: www.cnblogs.com/mmzuo-798/p/11759820.html