v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'dispatch'”
Posted
技术标签:
【中文标题】v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 \'dispatch\'”【英文标题】:Error in v-on handler: "TypeError: Cannot read property 'dispatch' of undefined"v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'dispatch'” 【发布时间】:2021-04-17 06:09:22 【问题描述】:1.mapGetters
正在工作。
2.在hello.vue的mounted
生命周期中调用的fetchTiles正在工作
3.fetchId
在click.vue的onClick方法中调用不工作
可能是什么问题?
你好.vue
<script>
import mapGetters, mapActions from "vuex";
import startEditor, addNodeBoard from "../utilities/utilities";
import Drawflow from "drawflow";
export default
name: "HelloWorld",
data()
return
editor: null,
;
,
props:
msg: String,
,
computed: mapGetters(["allTiles"]),
methods:
...mapActions(["fetchTiles"]),
,
mounted()
this.fetchTiles();
,
;
</script>
点击.vue
<template>
<div class="card-devices" v-on:click="onClick">
<div class="body" v-html="symbol"></div>
<span> names </span>
<div class="misc">
<i class="fas fa-trash"></i>
<i class="fas fa-pen"></i>
</div>
</div>
</template>
<script>
import mapActions from "vuex";
export default
data()
return
title: "",
ids: "",
;
,
props:
names: String,
symbol: String,
editors: Object,
,
methods:
...mapActions(["fetchId"]),
onClick: function()
this.ids = this.editors.node_selected.getAttribute("id");
this.fetchId(this.ids);
console.log("clicked");
,
,
;
</script>
<style scoped>
.fas
padding: 0 4px 0 4px;
.misc
width: 30%;
display: flex;
justify-content: flex-end;
.card-devices
display: flex;
justify-content: space-evenly;
</style>
store 在 main.js 中被调用
main.js
import Vue from 'vue'
import App from './App.vue'
import store from './store'
Vue.config.productionTip = false
new Vue(
store,
render: h => h(App)
).$mount('#app')
store.js
import Vue from 'vue'
import Vuex from 'vuex'
import tiles from './modules/tiles'
Vue.use(Vuex)
export default new Vuex.Store(
modules:
tiles
)
tiles.js
const state =
tiles: [...tilesCollections],
editor: ,
;
const getters =
allTiles: (state) => state.tiles,
;
const actions =
fetchTiles( commit )
commit("setTiles", tilesCollections);
,
fetchId( commit , ids)
console.log(ids);
commit("setEditor", ids);
,
;
const mutations =
setEditor: (state, editor) => (state.editor = editor),
setTiles: (state, tiles) => (state.tiles = tiles),
;
export default
state,
getters,
actions,
mutations,
;
【问题讨论】:
您的问题不清楚。是或否:它是否适用于mounted
?它在点击时有效吗?当您尝试使用它时,可能还没有准备好道具。您是否在父项中异步加载道具?
让我编辑我的问题。它在onclick
中不起作用。对于mounted
,它正在工作。 props 已准备就绪,因为我可以在安装组件时将其记录在控制台中。
点击时看到日志了吗?
如果你问onclick功能是否正常工作,是的,我可以在onclick功能中使用console.log编辑器
你从哪里得到标题中提到的dispatch
错误?我在代码中没有看到任何dispatch
【参考方案1】:
该模块称为 tile,但在您的导入中使用了 tile:
import Vue from 'vue'
import Vuex from 'vuex'
import tiles from './modules/tile'
Vue.use(Vuex)
export default new Vuex.Store(
modules:
tiles
)
FetchId 是 tile 模块中的一个动作,所以:
...mapActions("tiles", ["fetchId"]),
【讨论】:
文件名为 tile.js,import import tiles from './modules/tiles' 很抱歉这是我的错字。实际上它是tiles.js。我会编辑帖子。如果是拼写错误,vue 会显示导入错误吗?以上是关于v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'dispatch'”的主要内容,如果未能解决你的问题,请参考以下文章
[Vue 警告]:v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'fire'”
如何摆脱 v-on 处理程序中的错误:“TypeError:_vm.myFcn 不是函数”?
无法绑定 v-on:单击 Vuetify [Vue 警告]:v-on 处理程序中的错误:“TypeError:handler.apply 不是函数”
[Vue 警告]:v-on 处理程序中的错误:“TypeError: Object(...)(...).httpsCallable(...).then 不是函数”
错误:“v-on 处理程序中的错误:“TypeError:this.filter 未定义”在 vue 中的列表呈现中?
v-on 处理程序中的错误(Promise/async):“TypeError:无法读取未定义的属性“数据””//未定义