【发布时间】:2020-10-28 00:57:21
【问题描述】:
我目前正在处理包含父/子组件的页面。当我在父组件中管理其变量时,我的子组件会以某种方式得到更新。 我正在尝试做的事情:
- 我的子组件有一个“站点”变量,其中包含我需要通过 API 发送的所有数据
- 我的父组件有一个保存按钮,用于将子数据发送到后端
- 当子组件中的“站点”发生变化时,我会向父组件发送一个事件
@change -
@change事件包含我需要的所有数据,但不是我想要的格式 - 有一个函数
submit()可以获取此数据并修改其中一个数组,以便: ['foo','bar'] 变为此 'foo,bar' - 问题当我执行步骤“5”时,我的子组件会更新
父组件内的子组件
<configuracoes :configuracoes="configuracoes" @change="setData"
v-if="currentPage === 'configs'"/>
子组件发出的change事件
this.$emit("change", this.site);
'site' var 的重要部分
site: {
seo: {
keywords: [],
...
},
...
},
setData() 函数
setData(data) {
this.data = data;
},
submitData() 函数
submitData() {
if (this.currentPage === "configs") {
let data = ({}, Object.assign(this.data))
let keywords = data.seo.keywords.join(',')
data.seo.keywords = keywords
this.$store.dispatch("sites/updateSite", {
empresa_id: this.user.empresa_id,
site_id: this.siteId,
dados: data,
});
}
}
如您所见,我声明了另一个变量 let data 以避免更新 this.site 变量,但没有成功
【问题讨论】:
-
data.seo.keywords = keywords可能是孩子数据变化的原因 -
顺便问一下,你为什么需要这个逗号表达式?
let data = ({}, Object.assign(this.data)) -
@hlfrmn 我试图在不更改站点变量的情况下修改数据变量,但我做错了
标签: javascript vue.js vue-component dom-events