AsiaDIT 2024-04-07 17:14 采纳率: 42.9%
浏览 413
已结题

Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'form')


下面是源码:欢迎有经验的大佬解答
```javascript

<script setup>
import { ref } from "vue";
import { onMounted , onUpdated} from 'vue'
import VueEventTool from '../../utils/event.js'
let form = ref({})
onMounted(() => {
  VueEventTool.on("goodsEdit", (id) => {
  console.log(id);
  let data = {id:id};
  goodsApi.goodsById(data).then( (res)=>{
    console.log('res.data:',res.data);
        this.form = res.data.result
  });
});
})

</script>

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/af2cfdb3a26f4e818af0c17079b6722b.png "#left")
  • 写回答

21条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-07 17:14
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    在您提供的Vue.js代码中,出现了一个TypeError: Cannot set properties of undefined (setting 'form')错误,这通常表示尝试访问或设置一个未定义对象的属性。具体到您的代码段,错误出现在以下行:

    this.form = res.data.result
    

    这里尝试使用this.form来设置响应数据中的result,但在这个上下文中,this关键字未指向包含form属性的对象。在使用<script setup>语法的Vue单文件组件(SFC)中,this并不指向当前组件实例。为了解决这个问题,您应直接使用之前声明的ref变量form

    修正后的代码如下:

    <script setup>
    import { ref } from "vue";
    import { onMounted } from 'vue';
    import VueEventTool from '../../utils/event.js';
    
    // 声明并初始化 form ref
    let form = ref({});
    
    onMounted(() => {
      VueEventTool.on("goodsEdit", (id) => {
        console.log(id);
        let data = { id };
        goodsApi.goodsById(data).then((res) => {
          console.log('res.data:', res.data);
          // 直接使用 ref 变量 form 赋值
          form.value = res.data.result;
        });
      });
    });
    </script>
    

    关键改动在于将原本的this.form = res.data.result更改为form.value = res.data.result。这样,我们就直接使用form作为ref对象进行操作,通过.value属性来设置其内部值。此修改应该能解决您遇到的TypeError问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值