gpt4 book ai didi

java - 当数据更新时,VueJS DOM 不更新

转载 作者:行者123 更新时间:2023-12-01 17:52:06 26 4
gpt4 key购买 nike

所以我有一个带有按钮和一些文本的简单示例,但由于某种原因,即使当我记录 Vue 对象时,数据显然正在更新,它也没有更新。

<template>
<div>
<span>{{ showNav }}</span>
<span class="parallax__nav__trigger" v-on:click="toggleNav">
Menu
</span>
</div>
</template>

<script>
export default {
data: () => ({
showNav: false,
}),
methods: {
toggleNav: () => {
this.showNav = !this.showNav
console.log(this)
}
}
}
</script>
...

最佳答案

声明函数时请注意 this:

export default {
data: () => ({
showNav: false,
}),
methods: {
toggleNav: () => {
this.showNav = !this.showNav
console.log(this)
}
}
}

应该是:

export default {
data() { // <== changed this line
showNav: false,
},
methods: {
toggleNav() { // <== changed this line
this.showNav = !this.showNav
console.log(this)
}
}
}

推理

声明 Vue 方法时不要使用箭头函数 (() => {})。它们从当前作用域(可能是 window)中获取 this,并且不会反射(reflect) Vue 实例。

来自API Docs :

Note that you should not use an arrow function with the data property (e.g. data: () => { return { a: this.myProp }}). The reason is arrow functions bind the parent context, so this will not be the Vue instance as you expect and this.myProp will be undefined.

关于java - 当数据更新时,VueJS DOM 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48968993/

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