gpt4 book ai didi

javascript - 在 VueJs 2.0 中重新初始化数据的正确方法

转载 作者:搜寻专家 更新时间:2023-10-30 22:07:55 25 4
gpt4 key购买 nike

我在 SO 上浏览了这个答案:Is there a proper way of resetting a component's initial data in vuejs?

但是,现在不允许使用当前方法,VueJS 禁止更改 $data 变量。

正如您在此 https://github.com/vuejs/vue/issues/2873 中看到的那样(不允许修改 $data。)

所以如果我尝试上述方法,我会收到 VueJS 警告:

[Vue warn]: Avoid replacing instance root $data. Use nested data properties instead.

这是我的JS代码,

function initialState () {
return {
h2: 0,
ch4: 0,
c2h6: 0,
c2h4: 0,
c2h2: 0,
c3h8: 0,
c3h6: 0,
co: 0,
co2: 0,
o2: 0,
n2: 0,
selected: ''
}
}
export default {
name: 'something',
data () {
return initialState() // This is working fine
},
computed: {
tdcg: function () {
// some logic here...
}
},
methods: {
resetFields: function () {
this.$data = initialState() // --> This is what I want to achieve!
}
}
}

那么重新初始化数据的正确且最简单的方法是什么?

最佳答案

您可以使用 Object.assign遍历所有属性并分配它们:

export default {
data () {
return {
h2: 0,
// other attributes...
};
},
methods: {
resetFields () {
Object.assign(this.$data, this.$options.data.call(this));
}
}
}

这是一个演示 fiddle :https://jsfiddle.net/797yyvtz/


注意:我正在使用 this.$options.data 再次调用原始的 data 方法以获得数据。不需要单独的 initialState 函数。 data 方法初始状态函数。

关于javascript - 在 VueJs 2.0 中重新初始化数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40340561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com