Vue 笔记

仅记录使我不眠不休打代码的vue错误

v-if可以用来销毁和重置组件 配合事件总线来触发接收就不需要用定时循环获取了
事件总线的接收要使用$off(事件名)先关闭,不然就会接收多次

其次事件的发送如果和重定向处在同一段代码块,必须要给 $emit() (发送事件) ,外面加个延迟定时,否则会先重定向一步发送导致后续报错。

//2022-11-20 3:52
//熬夜打代码思考的一晚
    
//发送事件 
//延迟来传递信息,信息可以在页面未重置时接收但无法显示,所以延迟
  setTimeout(()=>{
    this.$EventBus.$emit("distoryDataview",name)
  },200)
  this.$router.push({path:"/home/web/redirect"})


<template>
  <div>
    <div v-show="database!=''" separator="/" style="margin:18px 0;font-size:18px;">
      <span>{{this.web}} / </span>
      <span class="database" @click="webDatabase">{{database}} / </span>
      <span v-if="table!=''">{{table}}</span>
    </div>
    <div v-if="distory_">
      <router-view></router-view>
    </div>
  </div>
</template>
 
销毁重置组件事件

  this.$EventBus.$off('distoryDataview')
  this.$EventBus.$on("distoryDataview",(value)=>{
    console.log("总线接收到事件",value)
    this.web=value
    this.$axios.get("api/webDatabase?name="+value).then(async (data)=>{
      this.database=data.data
    })
    this.distory_=false
    //重置页面信息
    this.distory_=true
    //发送信息
    this.$EventBus.$emit("ShowDataTable",value)
  })


接收事件 使用axios 获取当前网站的数据库中所有的表列出来,然后放到table_arr中

  this.$EventBus.$off('ShowDataTable')
  this.$EventBus.$on("ShowDataTable",(value)=>{
    console.log("显示表",value)
    this.$axios.get("api/webTableName?name="+value).then(async (data)=>{
      this.table_arr=[data.data]
      console.log(this.table_arr)
    })
  })

我搞了有几个小时了,不去网上找答案确实挺难的,没参考,没报错,还好我发现了接收事件打印比传输事件快我就知道有问题了

我一直以为是销毁组件的地方缺少延迟,后来才发现是重定向有问题,真是连锁反应,一步慢,步步慢。

如果能重来,那就最好不要来。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值