[英]Vue 3 + Vue Router 4: TypeError: Cannot read properties of undefined (reading 'push')
[英]uncaught TypeError: Cannot read properties of undefined (reading 'modelValue') in vue 3
我想在后端获取 vue 3 textarea 值,所以我在 Vue 3 组件设置中编写代码,如下所示:
<script lang="ts">
import {
computed,
defineComponent,
defineEmits,
defineProps
} from "vue";
import type { MessageBase } from "@/model/message/MessageBase";
import { MessageType } from "../../../model/message/MessageType";
import { useStore } from 'vuex'
export default defineComponent({
setup() {
const emit = defineEmits(['update:modelValue']);
const title = process.env.APP_NAME;
const { getters,dispatch } = useStore()
let username = computed(()=>getters['Trans/getUsername'])
chrome.runtime.onMessage.addListener(
async function(request, sender, sendResponse) {
if (request.msg === "something_completed") {
let result = request.data.content
await dispatch(
'Trans/setUsername',
result
)
}
}
);
const props = defineProps({
modelValue: {
type: [String, Number],
default: ''
}
})
computed({
get () {
return props.modelValue
},
set (value) {
return emit('update:modelValue', value)
}
})
const safeTranslate = () => {
let transMe= MessageType[MessageType.TRANSLATE];
let word = props.modelValue;
debugger;
let message : MessageBase = {
type: transMe,
data: {
word: word,
from: "en",
to: "zh"
}
};
chrome.runtime.sendMessage(message,function(response){
});
}
return {
title,
safeTranslate,
username
};
},
watch:{
},
components: {
},
});
</script>
但是当我运行这个应用程序时,显示错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'modelValue')
at Proxy.render (popup.js:17752:43)
at renderComponentRoot (popup.js:8083:44)
at ReactiveEffect.componentUpdateFn [as fn] (popup.js:12177:57)
at ReactiveEffect.run (popup.js:6028:29)
at setupRenderEffect (popup.js:12303:9)
at mountComponent (popup.js:12086:9)
at processComponent (popup.js:12044:17)
at patch (popup.js:11645:21)
at mountChildren (popup.js:11832:13)
at mountElement (popup.js:11741:17)
为什么在运行时显示此错误? 我应该怎么做才能解决这个问题? 这是模板。html 定义:
<div>
<textarea
:value="props.modelValue"
v-on:input="updateValue($event.target.value)"
placeholder="please input the translate words"></textarea>
</div>
你没有在模板中使用props
关键字,你需要直接访问它们:
<div>
<textarea
:value="modelValue"
v-on:input="updateValue($event.target.value)"
placeholder="please input the translate words"></textarea>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.