You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3+TypeScript中textarea用v-model报‘Invalid assignment target’错误求助

Vue3+TypeScript中v-model.trim绑定可选链属性报错解决

问题

在Vue3+TypeScript项目中,给textarea绑定v-model.trim="np?.description"时,出现「Invalid assignment target」转换错误。

完整错误信息

[plugin:vite:vue] Transform failed with 1 error:
/home/projects/vue3-vite-typescript-starter-jkcbyx/src/App.vue:33:73: 
ERROR: Invalid assignment target

"/home/projects/vue3-vite-typescript-starter-jkcbyx/src/App.vue:33:73"

Invalid assignment target
31 |        ? (_openBlock(), _createElementBlock("div", _hoisted_2, [
32 |            _withDirectives(_createElementVNode("textarea", {
33 |              "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($setup.np?.description) = $event))
   |                                                                           ^
34 |            }, null, 512 /* NEED_PATCH */), [
35 |              [

复现代码(App.vue)

<script setup lang="ts">
import { ref } from 'vue'

interface Thing {
  description: string
}

const np = ref<Thing>({
  description: 'asdf asdf asdf',
})
</script>

<template>
  {{ np?.description }}
  <br />
  <textarea v-model.trim="np?.description"></textarea>
</template>

解决方法

报错原因

v-model是语法糖,编译后会生成$event => 目标属性 = $event的赋值逻辑。但可选链操作符?.的表达式不能作为赋值的左操作数——np?.description编译后等价于np ? np.description : undefined,无法直接对这个表达式赋值,因此触发编译错误。

方案1:移除可选链(推荐)

由于np是已初始化的ref,内部值不会为null或undefined,直接省略?.即可:

<textarea v-model.trim="np.description"></textarea>

方案2:适配可能为null的场景

如果np存在被设为null/undefined的情况,可通过计算属性的get/set封装逻辑:

<script setup lang="ts">
import { ref, computed } from 'vue'

interface Thing {
  description: string
}

const np = ref<Thing | null>({
  description: 'asdf asdf asdf',
})

const description = computed({
  get() {
    return np.value?.description || ''
  },
  set(val: string) {
    if (np.value) {
      np.value.description = val
    }
  }
})
</script>

<template>
  {{ description }}
  <br />
  <textarea v-model.trim="description"></textarea>
</template>

内容的提问来源于stack exchange,提问作者Rio Weber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:55:30