찾다
웹 프론트엔드JS 튜토리얼beforeEnter 후크 기능 사용(코드 첨부)
beforeEnter 후크 기능 사용(코드 첨부)Jun 06, 2018 am 11:34 AM
vue뷰 후크 기능후크 기능

이번에는 beforeEnter 후크 기능(코드 포함) 사용법과 beforeEnter 후크 기능 사용 시 주의사항에 대해 소개하겠습니다. (다음은 실제 사례인데 한번 살펴보겠습니다.

왜 당신이 하는가? beforeEnter 후크 기능을 직접 만들어야 합니까?

문제 시나리오를 살펴보세요. 프로젝트에 단어 목록 페이지가 있습니다. 각 셀은 해당 단어가 마스터되었는지 여부를 표시합니다. 단어를 학습하고 해당 단어가 마스터되었는지 표시할 수 있으며, 세부정보 페이지에서 앞으로 및 뒤로 버튼을 클릭하여 다른 단어도 학습할 수 있으므로 뒤로를 클릭하면 단어 목록에 모든 단어의 최신 상태가 표시됩니다. 사용자가 마스터한 최종 페이지 관계는 다음과 같습니다.

wordListPage ——> wordDetail(일련의 단어 학습, 종료) ——> wordListPage(단어 목록 새로 고침)

위 시나리오에서는 Vue 수명주기 함수를 사용할 수 없습니다. 왜냐하면 Vue의 수명주기 함수는 beforeCreate, 생성됨, beforeMounted, 마운트 등과 같기 때문입니다. 이는 구성 요소가 초기화될 때만 호출되지만 구성 요소(VM 인스턴스)가 다음에서 나올 때 호출됩니다. 캐시(예: $route.go(-1), keep-alive), 수명주기 함수가 더 이상 호출되지 않으므로 단어 세부정보 페이지에서 목록 페이지로 돌아갈 때 적절한 시간을 찾을 수 없습니다.

물론 위의 경우에는 상대적으로 적은 수의 시나리오가 있지만 여전히 beforeEnter 후크가 필요합니다. function

종속 지식 포인트:

Route: vue-router

Mixin: mixin
  1. 중앙 이벤트 버스
  2. 1.
  3. 중앙을 위해 이벤트 버스의 경우, 간단한 이해는 공용 Vue 인스턴스(EventBus)를 생성하고 다른 위치에서 동일한 인스턴스를 사용하여 EventBus.$ 방출('demo') 메시지를 트리거하고, 공용 Vue 인스턴스를 사용하여 EventBus.$on( 'demo',() => {}) 좀 더 명확하게 말하면 다양한 장소에 메시지를 보내고 모니터링하는 그런 공용 구성 요소가 있습니다. 메시지 송수신을 자체적으로 구현하므로 이를 중앙 이벤트 버스라고 부릅니다.
코드는 다음과 같습니다: libs/.EventBus.js

import Vue from 'vue';
const EventBus = new Vue();
export default EventBus;
라우팅 후크를 살펴보겠습니다. function beforeEach

beforeEach Hook 함수를 통해 경로 전환 시 해당 컴포넌트의 beforeEnter 이벤트가 발생하게 됩니다.

코드는 다음과 같습니다: router/index.js

import EventBus from '@/libs/EventBus';
router.beforeEach((to, from, next) => {
  //如:EventBus.$emit('homeBeforeEnter');
  EventBus.$emit(to.name + 'BeforeEnter'); 
  if (to.matched.some(route => route.meta.isAuth)) {
    ...
    next()
  } else {
    next()
  }
  
})

3. 전역 믹스인 객체를 생성합니다

여기서 Enter 이전에 경로 전환 이벤트 모니터링 및 구성 요소 인스턴스 후크 기능 트리거가 구현됩니다.

libs/beforeEnterMixin.js

import EventBus from './EventBus';
export default {
  beforeCreate() {
    //获取当前路由名称,与前面使用to.name对应
    let vmName = this.$route.name;
    if (!vmName) {
      return;
    }
    // 当组件初始化时,先触发一次,后续将不再调用
    this.$options.beforeEnter();
    const beforeEnter = vmName + 'BeforeEnter';
    //监听路由切换时触发的...BeforeEnter事件
    //通过this.$options获取到实例中的beforeEnter钩子函数
    //监听到...BeforeEnter事件后,触发钩子函数beforeEnter调用
    EventBus.$on(beforeEnter, this.$options.beforeEnter);
  },
  //该函数在这里只作为占位,没有实际意义
  beforeEnter() {}
};

이 믹스인 객체의 경우 전역 또는 로컬 믹스인을 사용하는 것이 가능합니다.

글로벌 믹싱: main.js

import beforeEnterMixin from '@/libs/beforeEnterMixin';
Vue.mixin(beforeEnterMixin);

4. 다음과 같은 컴포넌트

에서 사용: home.vue

<template>
  <p>
    首页
  </p>
</template>
<script>
export default {
  beforeEnter() {
    console.log(&#39;首页 beforeEnter...&#39;);
  },
  created() {
    console.log(&#39;首页 created...&#39;)
  }
}
</script>

이 시점에서 beforeEnter를 직접 테스트할 수 있습니다. 저는 프로젝트가 많은 곳이라면 어디든 사용하게 될 것입니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

vue+webpack을 사용하여 비동기 로딩을 만드는 방법

vue 라우터 동적 라우팅 작업 하위 라우팅

위 내용은 beforeEnter 후크 기능 사용(코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Vue常见面试题汇总(附答案解析)Vue常见面试题汇总(附答案解析)Apr 08, 2021 pm 07:54 PM

本篇文章给大家分享一些Vue面试题(附答案解析)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

5 款适合国内使用的 Vue 移动端 UI 组件库5 款适合国内使用的 Vue 移动端 UI 组件库May 05, 2022 pm 09:11 PM

本篇文章给大家分享5 款适合国内使用的 Vue 移动端 UI 组件库,希望对大家有所帮助!

vue中props可以传递函数吗vue中props可以传递函数吗Jun 16, 2022 am 10:39 AM

vue中props可以传递函数;vue中可以将字符串、数组、数字和对象作为props传递,props主要用于组件的传值,目的为了接收外面传过来的数据,语法为“export default {methods: {myFunction() {// ...}}};”。

手把手带你利用vue3.x绘制流程图手把手带你利用vue3.x绘制流程图Jun 08, 2022 am 11:57 AM

利用vue3.x怎么绘制流程图?下面本篇文章给大家分享基于 vue3.x 的流程图绘制方法,希望对大家有所帮助!

聊聊vue指令中的修饰符,常用事件修饰符总结聊聊vue指令中的修饰符,常用事件修饰符总结May 09, 2022 am 11:07 AM

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何覆盖组件库样式?React和Vue项目的解决方法浅析如何覆盖组件库样式?React和Vue项目的解决方法浅析May 16, 2022 am 11:15 AM

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

通过9个Vue3 组件库,看看聊前端的流行趋势!通过9个Vue3 组件库,看看聊前端的流行趋势!May 07, 2022 am 11:31 AM

本篇文章给大家分享9个开源的 Vue3 组件库,通过它们聊聊发现的前端的流行趋势,希望对大家有所帮助!

react与vue的虚拟dom有什么区别react与vue的虚拟dom有什么区别Apr 22, 2022 am 11:11 AM

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구