VUEJS - 如何使用 child 组件中的数据变量到 parent

VUEJS - How to use data variable from child component into parent

我正在尝试将我的代码重构为耦合组件,以便它看起来更具可读性和更清晰,但我对如何在 parent 中使用数据变量 child 组件感到困惑。在 ModalIdentifier 中 addPI_ID 它应该设置为 false 这样我们点击 ADD 按钮模态标识符将设置为 true 并且模态将弹出

ModalIdentifier.vue (child)

<template>
  <v-dialog v-model="addPI_ID" width="600">
  </v-dialog>
</template>

export default {
   props: ["addPI_ID"],
}

addUser.vue(parent)

<template>
  <div>
    <modal-identifier :addPI_ID="false"></modal-identifier>

    //there's button, if we click that modal identifier dialog will pops up
    <v-btn
        color="#8FC23E"
        class="mt-3 mb-6"
        @click="addPI_ID = true"
    >ADD</v-btn>
  </div>
</template>

这部分我很困惑,什么是更好的主意?

我不确定我是否正确理解了你的问题,但我认为你不应该将“false”传递给父级的 modal-identifier 元素。你应该传入 addPI_ID 的实际值,像这样:

<modal-identifier :addPI_ID="addPI_ID"></modal-identifier>

如果您还没有在父级中声明变量 addPI_ID:

  data: {
    ...
    addPI_ID: false,
  },

道具适用于 parent -> child
您可以将 $emit 用于 child -> parent

在parent中:

  • 使用addPI_ID控制对话框(show/hide),通过props从parent 到 child
  • 监听事件“updateemitted 从 child 到 parent 新值共 addPI_ID
  • 单击“添加”按钮时将 addPI_ID 的值更改为真(显示对话框)
<modal-identifier :addPI_ID="addPI_ID" v-on:update="addPI_ID = $event"></modal-identifier>
<v-btn color="#8FC23E" class="mt-3 mb-6" @click="addPI_ID = true">ADD</v-btn>

在child中:

  • 创建一个计算属性“show”,以发出我们的自定义事件“update”到parent(新值addPI_ID),每当我们设置“show[=42的值=]”。当我们读取“show”的值时(获取)它 returns 我们道具的当前值 addPI_ID
  • Prop addPI_ID 从 parent
  • 接收值
<template>
  <div>
    <v-dialog v-model="show" width="600">
      <v-btn color="primary" @click="show = false">Close</v-btn>
    </v-dialog>
  </div>
</template>

<script>
export default {
  props: {
     addPI_ID: Boolean
  },
  computed: {
    show: {
      get() {
        return this.addPI_ID;
      },
      set(addPI_ID) {
        this.$emit('update', addPI_ID);
      },
    },
  },
};
</script>

希望对您有所帮助! ;)