vue3计算属性与监视,watch与watchEffect
<template> <div class="about"> <h2>计算属性与监事</h2> <fieldset> <legend>姓名操作</legend> 姓氏:<input type="text" v-model="user.fisstName" placeholder="请输入姓氏" /><br> 名字:<input type="text" v-model="user.lastName" placeholder="请输入名字" /> </fieldset> <fieldset> <legend>计算属性和监视的演示</legend> 姓名:<input type="text" v-model="fullname1" placeholder="显示姓名" /><br> 姓名:<input type="text" v-model="fullname2" placeholder="显示姓名" /><br> 姓名:<input type="text" v-model="fullname3" placeholder="显示姓名" /> </fieldset> </div> </template> <script> import { computed, reactive, ref, watch, watchEffect } from 'vue'; export default { name: 'About', components: { }, setup () { const user=reactive({ fisstName:"东方", lastName:"不败" }) //通过计算属性的方式,实现第一姓名 //vue3中的计算属性 //计算属性函数中如果只传入一个回调函数,表示是get //返回的事ref const fullname1=computed(()=>{ return user.fisstName+'-'+user.lastName }) //第二个姓名 const fullname2=computed({ get(){ return user.fisstName+'-'+user.lastName }, set(val){ console.log("=========",val) const names=val.split('-'); user.fisstName=names[0]; user.lastName=names[1]; } }) //监视 //immediate:true 当前watch自动会执行一次 //deep:true 深度监视 const fullname3=ref(''); watch(user,({fisstName,lastName})=>{ fullname3.value=fisstName+'-'+lastName },{immediate:true,deep:true}) // watch(()=>{ // fullname3.value=user.fisstName+'-'+user.lastName // },{immediate:true,deep:true}) // watchEffect(()=>{ // fullname3.value=user.fisstName+'-'+user.lastName // }) // 立即执行,没有惰性 immediate // 不需要传递你要侦听的内容,自动会感知代码依赖,不需要传递很多参数,只要传递一个回调函数 // 不能获取之前数据的值 watchEffect(()=>{ const name=fullname3.value.split('-'); user.fisstName=name[0]; user.lastName=name[1]; }) //watch监视多个数据的 //当我们使用watch监听非响应式的数据的时候,代码需要修改 // watch([user.fisstName,user.lastName],()=>{ // console.log("=====") // }) //用watch监视非响应式的数据的时候,需要回调的方式 watch([()=>user.fisstName,()=>user.lastName],([curn,cure],[prn,pred])=>{ console.log('watch', curn, prn, '---', cure, pred); }) // watch([() => user.fisstName, () => user.lastName], ([curName, curEng], [prevName, preEng]) => { // console.log('watch', curName, prevName, '---', curEng, preEng); // },{ immediate: true }) return { user, fullname1, fullname2, fullname3 } }, data(){ return { username:"111111", list:[1,3,4,5,] } }, methods:{ gex(){ console.log(this) this.list.push(10) } } } </script>
watch与watchEffect的区别以及使用
https://blog.csdn.net/qq_17355709/article/details/112723178
https://www.jb51.net/article/204827.htm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现