【问题标题】:Data injection on siblings and parent components fail - vue3兄弟组件和父组件的数据注入失败 - vue3
【发布时间】:2021-03-10 07:29:45
【问题描述】:

现代轻量级网络的朋友们,希望你们能帮助vue3的菜鸟。

我在多个子组件之间共享时间表详细信息,并显示最好的五个和最差的五个浪费时间的例子。 其中一个组件旨在向组件添加新的时间数据。具有 @click="$emit" 功能。不幸的是,它不会影响组件。我看到它添加了半秒钟,然后返回默认数据。未显示添加的“勒克斯”数据。

因此,我希望你们中的一个巫师能告诉我,我犯了什么愚蠢的错误。

App.vue

<template>
   <Top5 :projects="entries"/>
   <TimeDetail @add-time-data="newTimeData"/>
</template>

export default {
  name: 'App',
  methods: {
    newTimeData(details) {
      this.entries.push(details);
      console.log(details);
    } 
  },
  data() {
      return {
      entries: [
          {client:'Test', time: 20, date: '2020-09-03'},
          {client:'Test2', time: 30, date: '2020-09-04'},
          {client:'Test3', time: 45, date: '2020-09-05'}
         ]
      }
  },

TimeDetail.vue

<template>
    <div class="container-fluid">
        <form>
            <div class="row">
                <div class="col-md-1">
                    <label for="workdate">Date</label>
                    <input type="date" class="form-control" id="workdate">
                </div>
                <div class="col-md-2">
                    <label for="client">Client</label>
                    <input type="text" class="form-control" id="client">
                </div>
                <div class="col">
                    <label for="workhours">Hours (0.5 - 8)</label>
                    <input type="range" class="form-control-range" id="workhours" min="0.5" max="8" step="0.5" value="0.5" oninput="this.nextElementSibling.value = this.value">
                    <output>0.5</output> hours
                </div>
                <div class="col-md-1">
                <br><button type="submit" class="btn btn-primary" @click="$emit('add-time-data',{client:'Lux', time: 66, date: '2020-06-06'})">Submit</button>
                </div>
            </div>
        </form>
    </div>
</template>

<script>
export default {
  name: 'TimeDetail',
  emits: ['add-time-data'],
}
</script>

PS:控制台和 vue.js 开发工具无法使用 vue.js 未检测到错误和控制台未显示日志:(

【问题讨论】:

    标签: javascript vue.js vue-component vuejs3


    【解决方案1】:

    由于点击事件是由submit 类型的按钮触发的,您应该添加prevent 修饰符以防止默认行为是表单提交:

    <button type="submit" ... @click.prevent="$emit('add-time-data',...)">Submit</button>
    

    【讨论】:

    • 您能详细说明一下吗?因为目前没有表单数据被传输。这只是为了测试,它会起作用。无论如何都不必注入数据吗?在我写作的时候,它们出现了,然后眨眼间消失了。那么他们为什么不留下来呢?
    • 没有prevent,如果你点击那个按钮,页面将被重新加载,所以为了防止我们应该使用那个修饰符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2017-12-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多