当前位置: 首页 > news >正文

vue3 组件生命周期,watch和computed

背景:

Uncaught (in promise) ReferenceError: Cannot access 'state' before initialization

翻译成中文:

Uncathed(in promise)引用错误:初始化前无法访问“state”

错误原因:

在watch里面想要修改组件生命周期中创建的reactive({})创建的动态数据 

 错误代码如下:

<script setup>

import { reactive, ref, watch } from "vue";

import { useRoute, useRouter } from "vue-router";

const ruleForm = ref();

const router = useRouter();

const props = defineProps({

    isAdd: {

        type: String,

        default: "add",

    },

});

const emits = defineEmits(["clickBack"]);

const getBack = () => {

    emits("clickBack", "add");

};

//生命周期的触发时机。watch在onMounted之前

watch(

    () => props.isAdd,

    (newValue, oldValue) => {

        console.log('ajiang>>>', newValue);

        if (newValue === "edit") {

            state.homeType = "edit";

        } else {

            state.homeType = "add";

        }

    },

    {

        immediate: true,

        deep: true

    }

);

const state = reactive({

    loading: false,

    homeTitle: "航次测算",

    homeBack: "返回上级",

    homeType: "add", //edit

});

</script>

修改思路:

修改代码如下:

const props = defineProps({isAdd: {type: String,default: "add",},
});
const isAdd = computed(() => {return props.isAdd
})
watch(() => isAdd,(newValue, oldValue) => {console.log('ajiang>>>', newValue);if (newValue === "edit") {state.homeType = "edit";} else {state.homeType = "add";}},{immediate: true,deep: true}
);

 

http://www.dtcms.com/a/297455.html

相关文章:

  • 腾讯云代码助手使用指南
  • 【调试Bug】网络在训练中输出NaN
  • 工业与安防视频场景下,如何选择更合适的音视频技术方案
  • 创建 GitLab Runner 使用CICD自动化部署容器
  • 2025 Gitee vs. GitLab:全面对比与选择指南
  • MyBatis高级应用实战指南
  • JAVA + 海康威视SDK + FFmpeg+ SRS 实现海康威视摄像头二次开发
  • RWA的法律合规性如何保证?KYC/AML在RWA项目中的作用是什么?
  • 关于回归决策树CART生成算法中的最优化算法详解
  • AWS CAF:企业云转型的战略指南
  • 飞行控制领军者 | 边界智控携高安全级飞控系统亮相2025深圳eVTOL展
  • 多租户系统中的安全隔离机制设计
  • Spring 生态创新应用:现代架构与前沿技术实践
  • 【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析
  • SQLFluff
  • 数字增加变化到目标数值动画,js实现
  • react+threejs实现自适应分屏查看/3D场景对比功能/双场景对比查看器
  • GitHub git push 推送大文件
  • Linux: network: wireshark: tcp的segment重组是怎么判断出来的
  • Git下载与安装全攻略
  • reflections:Java非常好用的反射工具包
  • SEC_FirePower 第二天作业
  • 【深度学习新浪潮】Claude code是什么样的一款产品?
  • Keepalived 原理及配置(高可用)
  • 校园二手交易小程序的设计与实现
  • 局域网 IP地址
  • mid360连接机载电脑,远程桌面连接不上的情况
  • 智慧校园(智能出入口控制系统,考勤,消费机,电子班牌等)标准化学校建设,加速业务规模发展,满足学校、家长及学生对智能化、便捷化校园管理的需求清单如下
  • 三骏破局AI时代:电科金仓以“马背智慧”重定义数据库一体机
  • 从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统