ホームページ >ウェブフロントエンド >Vue.js >vue3 で現在のページを更新する方法について話しましょう

vue3 で現在のページを更新する方法について話しましょう

藏色散人
藏色散人転載
2023-04-02 08:30:019813ブラウズ

この記事は、vue3 に関する関連知識を提供します。また、vue3 で現在のページを更新する方法についても説明します。興味のある友人は、以下を参照してください。すべての人に役立つことを願っています。

vue3 で現在のページを更新する方法について話しましょう

1. ビジネス シナリオ

通常、テーブル データを削除または編集するときは、テーブル データを更新するためにインターフェイスを再度リクエストします。同時に要求する必要があるインターフェイスが複数ある場合、各インターフェイスを 1 つずつ調整することはできません。それを達成するには、よりフレンドリーな方法を使用する必要があります。

2. 実装のアイデア

最初の最も直感的な方法は、location.reload メソッドや $router.go(0) メソッドを使用するなど、現在のページを直接更新することです。ただし、この方法ではページに白い画面が表示されるため、不親切です。それでは、現在の vue コンポーネントを更新できますか? Vue コンポーネントが再レンダリングされると、そのライフサイクル全体が再度実行され、当然インターフェイスが再度リクエストされることはわかっています。では、現在のコンポーネントを更新するにはどうすればよいでしょうか? 1 つ目は、v-if を通じて現在のページ コンポーネントのレンダリングを制御することです。 router-view レンダリング コンポーネントの場合、v-ifrouter-view に直接追加します。そして、この判定条件を制御することで、例えば isRouterAlive と呼びます。

では、この判定条件をどのように制御するのでしょうか?コンポーネント間の通信が関係するため、provide/inject を使用する必要があります。 router-view コンポーネントの provide を通じて relaod メソッドを提供します。テーブル データを削除または編集した後、inject を使用して reload メソッドをトリガーします。リロードメソッドでは判定条件を制御します。 realod isRouterAlive=false の場合、コンポーネントを再ロードできるように、nextTick でこれを true に設定します。

コード ロジックの実装を見てみましょう。

3. コードの実装

最初に router-viewレンダリング コンポーネントを変更します

<template>
  <div class="main">
    <router-view v-if="isRouterAlive"></router-view>
  </div>
</template>

<script>
	export default {
    provide(){
        return {
            reload: this.reload
        }
    },
    data(){
        return {
            isRouterAlive: true
        }
    },
    methods: {
        reload(){
            this.isRouterAlive = false
            //通过this.$nextTick()产生一个微任务,在一次dom事件循环后,重新创建组件
            this.$nextTick(() => {
              this.isRouterAlive = true  
            })
        }
    }
  }
</script>

テーブル ページで、次のように実装します:

<template>
  <div>
    首页
    <button @click="handleSubmit">刷新</button>
  </div>
</template>

<script>
export default {
  //通过inject获取祖先元素的reload方法
  inject: [&#39;reload&#39;],
  data() {
    return {
      isRouterAlive: true,
    }
  },
  methods: {
    handleSubmit() {
      // 假如这是一个编辑提交事件
      // 这里是编辑请求的各种逻辑和接口...
      // 编辑执行成功,就刷新当前页面,请求reload
      this.reload()
    },
  },
}
</script>

このようにすると、ページが空白にならず、アドレス バーがすぐに切り替わることもなく、ユーザー エクスペリエンスが非常に使いやすくなります。

推奨される学習: 「vue ビデオ チュートリアル

以上がvue3 で現在のページを更新する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。