VUEJS - 如何使用子组件中的数据变量到父组件中

发布于 2025-01-09 13:52:03 字数 804 浏览 1 评论 0原文

我正在尝试将我的代码重构为几个组件,以便它看起来更具可读性和更清晰,但我对如何在父组件中使用数据变量子组件感到困惑。在 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>

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

I'm trying to refactor my code into couple component, so that it looks more readable and cleaner, but I got confused how to use data variable child component in parent. In the ModalIdentifier the addPI_ID it's supposed to set into false so that we click ADD button the modal identifier will set into true and modal will pop up

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>

this part I got confused, what's the better idea ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿忘初心 2025-01-16 13:52:03

道具是给父母的 ->孩子
您可以使用 $emit for child -> 父级中的父级

  • 使用addPI_ID控制对话框(显示/隐藏),通过props将值从父级传递给子级
  • 监听事件“update”将使用 addPI_ID 的新值从子级发送到父级
  • 当按钮按下时,将 addPI_ID 的值更改为 true(显示对话框) 点击ADD
<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”给父级(使用新值addPI_ID ),每当我们设置“show”的值时。当我们读取“show”(get)的值时,它会返回道具addPI_ID的当前值,
  • 道具addPI_ID从父级接收值
<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>

希望有帮助! ;)

Props are for parent -> child
You can use $emit for child -> parent

in parent:

  • Use addPI_ID to control the dialog(show/hide), passing the value through props from parent to child
  • Listen the event "update" to be emitted from child to parent with the new value of addPI_ID
  • Changing the value of addPI_ID to true (show dialog) when the button ADD is clicked
<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>

in child:

  • Create a computed property "show", to emit our custom event "update" to parent(with the new value of addPI_ID), whenever we set the value of "show". And when we read the value of "show"(get) it returns the current value of our prop addPI_ID
  • Prop addPI_ID receive the value from 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>

hope it helps! ;)

一生独一 2025-01-16 13:52:03

我不确定我是否正确理解你的问题,但我认为你不应该将“false”传递到父级中的模态标识符元素中。您应该传入 addPI_ID 的实际值,如下所示:

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

如果尚未声明,您还应该在父级中声明一个变量 addPI_ID:

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

I am not sure if I understood your question correctly, but I think you shouldn't be passing "false" into modal-identifier element in the parent. You should pass in the actual value of addPI_ID, like this:

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

You should also declare a variable addPI_ID in the parent if you haven't already:

  data: {
    ...
    addPI_ID: false,
  },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文