javascript - 如何在 VueJS 中修复“这是未定义的”?
问题描述
我在 VueJS 中创建了一个新组件并定义了两个方法。一种方法是 action(vuex),另一种是常规方法。
actionTypes.js
const TOGGLE_PREVIEW = 'togglePreview';
零件
method: {
...mapActions([actionTypes.TOGGLE_PREVIEW]),
onClickPreview: () => {
this.togglePreview();
}
发生错误;Uncaught TypeError: Cannot read property 'togglePreview' of undefined
.
解决方案
当创建 Vue 实例时,Vue 代理实例上的数据、方法、道具和注入,以便于访问。为了代理方法,它使用Function.prototype.bind ..
该
bind()
方法创建一个新函数,在调用该函数时,其this
关键字设置为提供的值
但是,这不适用于箭头函数,因为它们的范围无法绑定并且它们继承了父级的范围。因此,您的解决方案是改用普通函数,以便它的this
范围可以正确绑定到 Vue 实例。
methods: {
...mapActions([actionTypes.TOGGLE_PREVIEW]),
onClickPreview() {
this.togglePreview();
}
}
推荐阅读
- node.js - Nest.js 全局守卫
- regex - 如何使用 sed 拆分字符串?
- c++ - 如何在 openGL c++ 的同一个窗口中绘制两个对象?
- vb.net - 检查数组列表中是否已存在对象属性
- android - 在应用程序中创建等效的网页。安卓
- javascript - Html php Javascript 类不能动态工作。由阿贾克斯
- c++ - 有没有办法测试目标是否在 Clang 中具有本机半精度支持?
- google-cloud-platform - 手动触发 GCP 发布子功能
- gtk - 使用 Glade 添加单元格渲染器
- android - 重复的 id,标签为空,带有 androidx.navigation.fragment.NavHostFragment 的另一个片段