【发布时间】:2021-03-10 21:41:32
【问题描述】:
我在 VueJS 中创建了一个表单组件并尝试将输入绑定到父组件。我不确定执行此操作的正确方法,并且对我当前的尝试有效感到困惑,因为我认为它不应该!
我的父组件是:
<!-- parent component -->
<template>
<div>
<my-form :field="field" />
</div>
</template>
<script>
export default {
data: function() {
return {
field: {
title: "title",
options: "selectedOption"
}
}
}
</script>
我的子组件是:
<!-- parent component -->
<template>
<div>
<input v-model="field.title" />
<select v-model="field.selectedOption">
<option>A</option>
<option>B</option>
</select>
</div>
</template>
<script>
export default {
props: ["field"]
}
</script>
我原以为这不起作用,因为我只是将字段值绑定到我的表单,但由于某种原因,这似乎更新了父数据字段。
有人能帮我理解为什么这是有效的吗?正确的做法是什么?
Vue 版本是 2.6.12。
【问题讨论】:
-
如果你有很多这样的关系,你可能想看看状态管理。在那里您可以全局获取和设置数据。 Vue 使用 VueX (vuex.vuejs.org) 让这一切变得简单。
-
我在其他地方使用 VueX,但想将其保留为组件,以便我可以轻松地在其他地方使用。我的理解也是你应该避免改变子组件中的状态? (即,偏好是父组件将状态作为道具传递给子组件?)
标签: vue.js vuejs2 v-model vue-props