uncaught TypeError: Cannot read properties of undefined (reading 'modelValue') in vue 3
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)
为什么在运行的时候显示这个错误?我应该怎么做才能解决这个问题?这是 template.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>
我想在后端获取 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)
为什么在运行的时候显示这个错误?我应该怎么做才能解决这个问题?这是 template.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>