ホームページ >ウェブフロントエンド >Vue.js >Vue3 ページ部分更新コンポーネントの更新問題を解決する方法
vue3のライフサイクルとvue2のライフサイクルは全く異なります
この2つを簡単に紹介します違い
Vue2 と Vue3 の最大の違い: Vue3 合成 API (Composition API) と比較して、Vue2 はオプション API (Options API) を使用します
古いオプション APIデータ、計算された属性、メソッドなど、さまざまな属性がコード内で分離されます。新しい合成 API では、メソッド (関数) を使用して分離することができます。属性を使用してグループ化する古い API と比較して、 この方法では、コードがよりシンプルでクリーンになります。
export default { props: { title: String, }, data() { return { username: "", password: "", }; }, methods: { login() { //登录axios请求处理 }, }, components: { buttonComponent: btnComponent, }, computed: { fullName() { return this.firstName + " " + this.lastName; }, }, };
export default { props: { title: String, }, setup() { const state = reactive({ //数据 username: "", password: "", lowerCaseUsername: computed(() => state.username.toLowerCase()), //计算属性 }); //方法 const login = () => { //登录axios请求处理 }; return { login, state, }; }, };
Vue2--------------vue3 beforeCreate -> setup() created -> setup() beforeMount -> onBeforeMount mounted -> onMounted beforeUpdate -> onBeforeUpdate updated -> onUpdated beforeDestroy -> onBeforeUnmount destroyed -> onUnmounted activated -> onActivated deactivated -> onDeactivated
onBeforeMount(): コンポーネントがノードにマウントされる前に実行される関数です。本題に入り、今日の問題を解決しますコードまず、app.vueを変更する必要がありますコード:
onMounted(): コンポーネントがマウントされた後に実行される関数。
onBeforeUpdate(): コンポーネントが更新される前に実行される関数。
onUpdated(): コンポーネントの更新が完了した後に実行される関数。
onBeforeUnmount(): コンポーネントがアンマウントされる前に実行される関数。
onUnmounted(): コンポーネントのアンマウント完了後に実行される関数
コンポーネントが含まれる場合、以下の 2 つのフック関数が追加されます。
onActivated(): 含まれるコンポーネントには、さらに 2 つのライフサイクル フック関数が含まれます。アクティブ化されると実行されます。
onDeactivated(): たとえば、コンポーネント A からコンポーネント B に切り替える場合、コンポーネント A が消えたときに実行されます。
<template> <div id="app"> <nav-View v-show="login" /> <router-view v-if="isRouterAlive" /> <!-- 进行v-if判断 --> <foot-View v-show="login" /> </div> </template> <script> import navView from "@/components/navView.vue"; import footView from "@/components/footer.vue"; import { onMounted, ref, watch ,nextTick,provide,} from "vue";//要引入方法 import { useRouter } from "vue-router"; export default { name: "app", components: { navView, footView, }, created() { console.log("123", this.$route.path); }, setup() { // 局部组件刷新 const isRouterAlive = ref(true); const reload = () => { isRouterAlive.value = false; nextTick(() => { isRouterAlive.value = true; }); }; provide("reload", reload); return { isRouterAlive, }; }, watch: { }, }; </script> <style> * { margin: 0px; } #app { font-family: "Avenir", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; } </style>次のステップは、サブコンポーネント (ページネーション呼び出し) コード:
<template> <div> <!-- input框输入值,点击按钮,看值会不会清空 --> <input type="text"> </div> <button @click="refresh">页面刷新</button> </template> <script> import { inject } from "vue"; export default{ setup() { const refresh = inject("reload"); //在方法体中的调用方法 // refresh(); return { refresh, }; }, }; </script>です。
以上がVue3 ページ部分更新コンポーネントの更新問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。