Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript vue js道具重置计时器 {{time}} 导出默认值{ 名称:“计时器”, 数据(){ 返回{ 时间:0 } }, 挂载(){ 设置间隔(()=>{ ++这次 }, 1000) } }_Javascript_Timer_Vue.js_Vuejs2 - Fatal编程技术网

Javascript vue js道具重置计时器 {{time}} 导出默认值{ 名称:“计时器”, 数据(){ 返回{ 时间:0 } }, 挂载(){ 设置间隔(()=>{ ++这次 }, 1000) } }

Javascript vue js道具重置计时器 {{time}} 导出默认值{ 名称:“计时器”, 数据(){ 返回{ 时间:0 } }, 挂载(){ 设置间隔(()=>{ ++这次 }, 1000) } },javascript,timer,vue.js,vuejs2,Javascript,Timer,Vue.js,Vuejs2,父母 <template> <span>{{time}}</span> </template> <script> export default { name: 'Timer', data () { return { time: 0 } }, mounted () { setInterval(() => { ++this.

父母

<template>
    <span>{{time}}</span>
</template>
<script>
  export default {
    name: 'Timer',
    data () {
      return {
        time: 0
      }
    },
    mounted () {
      setInterval(() => {
        ++this.time
      }, 1000)
    }
  }
</script>

从“./Timer”导入计时器
导出默认值{
名称:'游戏',
组成部分:{
定时器:定时器
},
}
从父级重置计时器的最佳方法是什么?
我希望避免发出事件,因为这将导致计时器的所有使用都被重置。传递道具的最佳选项是什么?例如“开始”、“停止”、“重置”?

如果希望将事件从父对象传播到子对象,使用道具并观察它可能是处理此问题的一种好方法。通常,父组件和子组件之间的数据通信应该使用用于父组件到子组件通信的道具以及用于子组件到父组件通信的事件来完成


当然,还有其他库可用于管理组件间通信,但是,对于纯Vue.js代码,上述情况通常适用。

是的,有一种很好的方法,可以不增加子代码中的计时器,而是在父数据中创建计时器,并在父数据中增加计时器,然后使用道具将其传递给子代码,您可以在需要时在父代码中重置它>>您可以复制下面的代码并查看结果

子代码


{{timer}}
导出默认值{
名称:“计时器”,
数据(){
返回{
}
},
道具:{timer:Number},
安装的(){
}
}
父代码


从“./Timer”导入计时器
导出默认值{
名称:'游戏',
数据(){
返回{
timerInit:0
},
组成部分:{
定时器:定时器
},
安装的(){
设置间隔(()=>{
++这是timerInit;
console.log(this.timerInit);
},1000)
},
方法:{
clickHandler(){
this.timerInit=0;
console.log(this.timerInit);
}
}
}

重置

我认为这是将计时器与父级耦合得太紧了。好吧,最好使用事件和道具
<template>
  <div class="tetris">
    <timer></timer>
  </div>
</template>
<script>
  import Timer from './Timer'
  export default {
    name: 'Game',
    components: {
      Timer: Timer
    },
   }
  <template>
<span>{{timer}}</span>
 </template>
 <script>
 export default {
  name: 'Timer',
   data () {
  return {

     }
   },
      props:{timer:Number},
      mounted() {

        }
   }
  </script>