解决 vue 切换路由 canvas 不刷新

解决思路:实践在子组件内刷新好像不行,应在父组件内刷新。
子组件

<template>
  <div class="home">
    <canvas id="myCanvas" width="640" height="800"></canvas>
  </div>
</template>

<script>
export default {
  data() {
    return {
    };
  },
  methods: {
    eventLoop(ctx) {
      window.setTimeout(() => {this.drawScreen(ctx)}, 20)
    },
    drawScreen(ctx) {
      ctx.fillStyle = "#000";
      ctx.fillRect(0, 0, 640, 480);
    },
  },
  mounted() {
    window.addEventListener("load", eventWindowLoaded, false);
    function eventWindowLoaded() {
      canvasApp();
    }
    let eventLoop = this.eventLoop;
    function canvasApp() {
      let canvas = document.getElementById("myCanvas");
      let ctx = canvas.getContext("2d");
      eventLoop(ctx);
    }
  },
};
</script>
<style>
</style>

父组件

<template>
  <div id="app">
    <div id="nav">
      <router-link @click.native="reload" to="/" >Home</router-link> |
      <router-link to="/about">About</router-link>
    </div>
    <router-view />
  </div>
</template>

<script lange="">
export default {
  methods: {
    reload() {
      this.$router.go(0)
    }
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

#nav {
  padding: 30px;
}

#nav a {
  font-weight: bold;
  color: #2c3e50;
}

#nav a.router-link-exact-active {
  color: #42b983;
}
</style>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值