javascript - VueJS中更新数据的机制?
问题描述
<script>
export default {
data() {
return {
data: {},
dataTemp: {}
}
},
methods: {
updateData() {
let queries = { ...this.$route.query }
this.data = {
...this.data,
pID: queries.pid,
sID: queries.sid
}
this.dataTemp = {
...this.dataTemp,
pID: queries.pid,
sID: queries.sid
}
}
}
}
</script>
在上面的示例中,当我更新 this.data 时,this.dataTemp 也会发生变化。
但我认为这彼此无关。
请向我解释这个问题。谢谢!
解决方案
data
这会将和的初始值设置dataTemp
为空对象。请注意,尽管它们都是不同的对象 - data !== dataTemp
。
data() {
return {
data: {},
dataTemp: {}
}
}
如果有人打电话this.updateData()
,两者都会改变,因为我们同时分配了data
and dataTemp
。如果您只想更新data
,您可以将方法更改为
updateData() {
let queries = { ...this.$route.query }
this.data = {
...this.data,
pID: queries.pid,
sID: queries.sid
}
}
推荐阅读
- node.js - 我可以在 node.js 中同时在本地和全局安装包吗?
- react-native - 无法解决反应域
- java - 没有正文的循环,我从一本书中得到了代码,但我不明白代码中的数学
- python - 如何在 ANSI 中转换“01010000”以创建 8 位长的二进制文件?
- python - Mqtt 代理经常断开连接,即使它具有唯一的客户端 ID
- c++ - 通过添加 0 修复对静态成员变量的未定义引用
- python - sqalchemy 更新 bindparam 主键
- asp.net-core - 如何阻止本地化的 Microsoft.CodeAnalysis.*.resources.dll 文件被 ASP.NET Core 发布?
- asp.net-mvc - 在 ASP .Net Core MVC 的我的网址中添加#section
- php - 将多选值从下拉菜单发送到数据库(逗号分隔),现在想再次接收数据作为选项