29_编程式路由导航

29_编程式路由导航

< router-link >实际上是< a >链接 这个可以用来处理 < button >跳转

在这里插入图片描述

代码演示

Message.vue

<template>
    <div>
        <ul>
            <li v-for="m in messageList" :key="m.id">

                <button @click="pushShow(m)">push查看</button>
                <button @click="replaceShow(m)">repalce查看</button>
                <button @click="back">后退</button>
                <button @click="forward">前进</button>
            </li>
            <hr />
            <router-view></router-view>
        </ul>
    </div>
</template>

<script>
    export default {
        name: "Message",
        data() {
            return {
                messageList: [
                    { id: "001", title: "消息001" },
                    { id: "002", title: "消息002" },
                    { id: "003", title: "消息003" },
                ],
            };
        },
        methods: {
            pushShow(m) {
                this.$router.push({
                    path: "/home/message/detail",
                    query: {
                        id: m.id,
                        title: m.title,
                    },
                });
            },
            replaceShow(m) {
                this.$router.replace({
                    path: "/home/message/detail",
                    query: {
                        id: m.id,
                        title: m.title,
                    },
                });
            },
            back() {
                this.$router.back()
            },
            forward() {
                this.$router.forward()
            },
        },
    };
</script>

缓存路由组件

在这里插入图片描述

代码演示

News.vue

<template>
    <div>
        这里是news内容
        <ul>
            <li>news001 <input type="text"></li>
            <li>news002 <input type="text"></li>
            <li>news003 <input type="text"></li>
        </ul>
    </div>
</template>

<script>
    export default {
        name:'News'
    }
</script>

Home.vue

<template>
    <div>
        <h2>我是Home内容</h2>
        <ul>
            <li>
                <router-link to="/home/news">News</router-link>
            </li>
            <li>
                <router-link to="/home/message">Message</router-link>
            </li>
        </ul>
        <!-- 缓存路由组件 组件名-->
        <keep-alive include="News">
            <router-view></router-view>
        </keep-alive>
    </div>
</template>

<script>
    export default {
        name: "Home",
    };
</script>

# 缓存多个组件 用数组
<keep-alive :include="['News','Message']">
</keep-alive>

两个新的生命周期钩子

在这里插入图片描述

代码演示

解释 用mounted() 和 beforeDestory() 切换组件的时候定时器还在运行

News.vue

<template>
    <div>
        这里是news内容
        <ul>
            <li :style="{opacity}">你好啊</li>
            <li>news001 <input type="text"></li>
            <li>news002 <input type="text"></li>
            <li>news003 <input type="text"></li>
        </ul>
    </div>
</template>

<script>
    export default {
        name:'News',
        data() {
            return {
                opacity:1
            }
        },
        activated(){
            console.log("News组件被激活了");
            this.timer =setInterval(()=>{
                this.opacity -=0.01
                if( this.opacity <=0 ){
                    this.opacity =1
                }
            },16)
        },
        deactivated(){
            console.log("News组件失活了");
            clearInterval(this.timer)
        }
    }
</script>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值