ホームページ  >  記事  >  ウェブフロントエンド  >  vue keep-alive を使用してデータをリクエストする方法

vue keep-alive を使用してデータをリクエストする方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-29 14:12:091741ブラウズ

今回は、vue keep-alive を使用してデータをリクエストする方法と、vue keep-alive を使用してデータをリクエストする際の注意点について説明します。以下は実際のケースです。

インデックスページ:ホームページのブランド入口

リストページ:商品一覧ページ

プロダクトページ:商品詳細ページ

インデックスページからリストに入る場合はページを更新する必要がありますが、更新する必要はありません製品ページからリストに戻るときにページを更新するため、リストでは keep-alive 属性が使用され、keepAlive が true に設定されます。ただし、製品からリストに戻るときに問題が発見されました。リストページは正しいブランドリストではなく、以前にクリックしたブランドリストです。不正なキープアライブ要求データに関しては人によってさまざまな問題が発生するため、ここに私の解決策を示します。これがあなたのアイデアになれば幸いです。

解決策

keepAliveを修正してキープアライブを変更する人も多いと思いますが、試してみてもダメだったので考え直しました

フック関数の実行順序

Don'キープアライブを使用しない

ルート入力前 --> マウント済み --> ルート入力前にキープアライブを使用 --> マウント済み--> 無効化

まずリテラシーを学びましょう。多くの人や私は上記の知識を知りません。これを回避するには、keep-alive ページで this.$route.params のパラメータを取得します。 keepAlive を設定すると、製品が戻ったときにデータが正しくなくなります。ページがリストに入ったときにキャッシュされた状態になり、インデックスによって入っているかどうかによって関数を実行するかどうかが判断されます。 ,

list.vue
   beforeRouteEnter(to, from, next) {
   //判断从index页面进入,将list的isBack设置为true
   //这样就可以请求数据了
     if (from.name == 'index') {
      to.meta.isBack = true;
     }
     next();
   },
   activated: function () {
     if (this.$route.meta.isBack || this.isFirstEnter) {
      //清理已有商品列表的数据,重新请求数据,如果不清除的话就会有之前的商品缓存,延迟显示最新的商品
      this.proData = [];
      //请求数据
      this.fetchData();
     }
     //重新设置当前路由的isBack
     this.$route.meta.isBack = false;
     //重新设置是否第一次进入
     this.isFirstEnter = false;
   },
   mounted: function () {
    //如果是第一次进入,或者刷新操作的话,也请求数据
     this.isFirstEnter = true;
   },

router.js

const appRouter = {
 mode: "history",
 base: "/m/",
 routes: [
  {
   path: "",
   redirect: "/index"
  },
  {
   path: "/index",
   name: "index",
   component: Index,
   meta: {
    keepAlive: true
   }
  },
    {
   path: "/list",
   name: "list",
   component: List,
   meta: {
    keepAlive: true,
    isBack: false //isback是true的时候请求数据,或者第一次进入的时候请求数据
   }
  },
  {
   path: "/product/:id",
   name: "product",
   component: Product,
   meta: {
    keepAlive: false
   }
  }
  
 ]
};

Vue.use(Router);
export default new Router(appRouter);
この記事のケースを読んだことがあるかと思います この方法をマスターした後は、よりエキサイティングなコンテンツについては、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

vue input input を操作して文字と数字の組み合わせと長さが 30 未満であることを確認する方法

seajs を使用して require で規約を記述する方法

以上がvue keep-alive を使用してデータをリクエストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。