(四十六)Vue Router组件所独有的两个钩子activate、deactivated

上一篇:(四十五)Vue Router之编程式路由导航

下一篇:(四十七)Vue Router之路由守卫

Vue Router提供了两个钩子函数,分别是activated和deactivated。

这两个钩子函数可以用于在路由组件的激活状态发生变化时执行相关的逻辑。您可以在组件内部定义这些钩子函数,并在其中处理与激活状态相关的任务。

需要注意的是,这两个钩子函数是Vue Router特定的钩子函数,用于捕获路由组件的激活状态,而不是Vue中的通用生命周期钩子函数

activated钩子函数

  • 作用:在路由组件被激活时调用,即当路由导航到该组件时执行。
  • 使用方式:在组件内部定义activated钩子函数。
  • 特点:
    • 当路由导航到该组件时,会触发该钩子函数。
    • 可以在该钩子函数中执行与组件激活相关的操作,例如数据加载、动画效果等。

deactivated钩子函数

  • 作用:在路由组件失活时调用,即当路由从该组件导航到其他组件时执行。
  • 使用方式:在组件内部定义deactivated钩子函数。
  • 特点:
    • 当路由从该组件导航到其他组件时,会触发该钩子函数。
    • 可以在该钩子函数中执行与组件失活相关的操作,例如保存组件状态、清理资源等。

demo

(四十三)Vue Router之嵌套路由的demo上进行修改,修改News组件:做一个一段文字逐渐虚化,到0时重新显示的效果

<template>
	<ul>
    <li :style="{opacity}">欢迎学习Vue</li>
		<li>news001<input type="text"></li>
		<li>news002<input type="text"></li>
		<li>news003<input type="text"></li>
	</ul>
</template>

<script>
  export default {
    // eslint-disable-next-line vue/multi-word-component-names
		name:'News',
    data(){
      return{
        opacity:1
      }
    },
    //不用路由组件钩子写法
    /*mounted(){
      this.timer = setInterval(() => {
        console.log('mounted')
        this.opacity -= 0.01
        if(this.opacity <= 0) this.opacity = 1
      },20)
    },
    beforeDestroy() {
      console.log('beforeDestroy')
      clearInterval(this.timer)
    }*/
    //路由组件钩子写法
    activated() {//激活
      this.timer = setInterval(() => {
        console.log('activated')
        this.opacity -= 0.01
        if(this.opacity <= 0) this.opacity = 1
      },20)
    },
    deactivated() {//失活
      console.log('deactivated')
      clearInterval(this.timer)
    }
  }
</script>

效果:当路由导航到News组件时时,News组件将被激活,activated钩子函数将被调用,可以看到一段文字逐渐虚化,并将在控制台打印activated。当路由导航到其他路径时,News组件将失活,deactivated钩子函数将被调用,并将在控制台打印deactivated。
在这里插入图片描述

在这里插入图片描述

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue Router 中,你可以使用组件来定义不同的路由页面。每个路由对应一个组件,当用户访问特定的路由时,对应的组件就会被加载和渲染。 下面是一个基本的示例,展示如何在 Vue Router 中使用组件: 1. 首先,在你的项目中创建一个组件。可以在 `components` 文件夹下创建一个新的组件文件,例如 `Home.vue`。 ```vue <template> <div> <h1>Home Page</h1> <p>Welcome to the home page!</p> </div> </template> <script> export default { // 组件的逻辑代码 } </script> ``` 2. 在 `router.js` 文件中,引入你的组件,并在路由规则中使用它。 ```javascript import Home from './components/Home.vue'; const routes = [ { path: '/', component: Home } ]; // 其他路由规则... const router = new VueRouter({ routes, mode: 'history' }); export default router; ``` 在上面的代码中,我们将 `Home` 组件作为根路径 `'/'` 的路由规则中的组件。 3. 最后,在你的根组件中使用 `<router-view>` 标签来显示不同页面对应的组件。 ```html <template> <div> <h1>My App</h1> <router-view></router-view> </div> </template> <script> export default { // 组件的逻辑代码 } </script> ``` `<router-view>` 标签会根据当前路由的路径,动态地渲染对应的组件。 这就是如何在 Vue Router 中使用组件来定义不同的路由页面。你可以创建多个组件,并在路由规则中使用它们,以构建更复杂的应用程序。希望对你有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆亦何为

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值