解决思路:实践在子组件内刷新好像不行,应在父组件内刷新。
子组件
<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>