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

晋江是哪个省的城市百度seo关键词外包

晋江是哪个省的城市,百度seo关键词外包,crm财务系统,wordpress 反代假期第二篇,对于基础的知识点,我感觉自己还是很薄弱的。 趁着假期,再去复习一遍 之前已经记录了一篇【vue3基础知识点-computed和watch】 今天在学习的过程中发现,之前记录的这一篇果然是很基础的,很多东西都讲的不够…

假期第二篇,对于基础的知识点,我感觉自己还是很薄弱的。
趁着假期,再去复习一遍

之前已经记录了一篇【vue3基础知识点-computed和watch】
今天在学习的过程中发现,之前记录的这一篇果然是很基础的,很多东西都讲的不够细致

话不多说,进入正题:

vue2

vue2中的watch写法,(vue3可以向下兼容vue2的写法)

<template><div><h1>当前求和为:{{sum}}</h1><button @click="sum++">点我+1</button></div>
</template><script >import { ref, watch } from 'vue';
export default {
name:'demo',
watch: {// vue2简单写法sum(newVal, oldVal) {console.log('sum的值变化了', newVal, oldVal);}//vue2完整写法sum:{handler(newVal,oldval){console.log('sum的值变化了', newVal, oldVal);},deep:true,immediate:true}
},
setup(){let sum = ref(0)return {sum}
}
}</script>

在这里插入图片描述
虽然vue3中可以使用vue2的写法,但是混合使用会导致代码风格不一致,增加维护成本。而且我们只是习惯了vue2的写法,全都使用vue3的写法,其实就是一个熟悉的过程,vue3 的 < script setup> 语法和 Composition API组合式api还是很香的,慢慢来吧

组合式api其实就是一堆内置的函数,需要用什么就引入对应的函数,如ref、wacth等

vue3

1、监听ref定义的单个响应式数据

<template><div><h1>当前求和为:{{sum}}</h1><button @click="sum++">点我+1</button></div>
</template>
<script >
import { ref, watch } from 'vue';
export default {
name:'demo',
setup(){let sum = ref(0)//第一个参数,要监听的数据//第二个参数,回调函数,两种写法:箭头函数或者普通函数都可以//(在vue3中,wathc的回调函数可以写成箭头函数,因为setup中this是undefined,没有响应式的this上下文)//箭头函数写法watch(sum,(newVal,oldval)=>{console.log('sum变了',newVal,oldval)unde})// 普通函数写法watch(sum,function(newVal,oldval){console.log('sum变了',newVal,oldval)})return {sum}
}}

2、监听ref定义的多个响应式数据

<template><div><h1>当前求和为:{{sum}}</h1><button @click="sum++">点我+1</button><h2>当前招呼语:{{msg}}</h2><button @click="msg+='wow'">点我打招呼</button></div>
</template>
<script >
import { ref, watch } from 'vue';
export default {
name:'demo',
setup(){let sum = ref(0)let msg = ref('hello')
//vue2中watch是配置项,只能写一个;vue3中watch是函数,可以调用n次
watch(sum,(newVal,oldVal)=>{console.log('sum变了',newVal,oldVal);
})
watch(msg,(newVal,oldVal)=>{console.log('msg',newVal,oldVal);
})return {sum,msg}
}
}
</script>

这种写法虽然可以多次调用watch函数,但是还有更简化的写法

<template><div><h1>当前求和为:{{ sum }}</h1><button @click="sum++">点我+1</button><h2>当前招呼语:{{ msg }}</h2><button @click="msg += 'wow'">点我打招呼</button></div>
</template>
<script >
import { ref, watch } from "vue";
export default {name: "demo",setup() {let sum = ref(0);let msg = ref("hello");
//第一个参数为数组,第二个参数为回调函数watch([sum, msg], (newVal, oldVal) => {console.log("sum或msg变了", newVal, oldVal);});return {sum,msg,};},
};
</script>

在这里插入图片描述
在这里插入图片描述
vue3 watch中的参数,第三个就是配置项

注意点:监听ref定义的数据不需要写deep:true,简单数据类型不需要深度监听,ref定义的对象,本质上还是调用了reactive将其包装成响应式对象,所以ref定义的对象默认开启了深度监听

watch(source: WatchSource, cb: WatchCallback, options?: WatchOptions): StopHandle
source: 监听的源(可以是响应式数据、计算属性或ref等)
cb: 当源发生变化时被调用的回调函数
options(可选): 一个对象,包含额外的选项配置
返回一个停止监听的函数

    let sum = ref(0);let msg = ref("hello");//监听单个watch(sum, (newVal, oldVal) => {console.log("sum变了", newVal, oldVal);},{immediate:true});//监听多个watch([sum, msg], (newVal, oldVal) => {console.log("sum或msg变了", newVal, oldVal);},{immediate:true});

3、监听reactive定义的单个响应式数据的全部属性

<template><div>
<h2>姓名:{{person.name}}</h2>
<h2>性别:{{person.sex}}</h2>
<button @click="person.name+='~'">姓名变了</button><button  @click="person.sex+='!'">性别变了</button></div>
</template>
<script >
import {reactive,watch } from "vue";
export default {name: "demo",setup() {let person = reactive({name:'莲花',sex:'男'})watch(person, (newVal, oldVal) => {console.log("person变了", newVal, oldVal);});return {person};},
};
</script>

这有个踩坑点,recative定义的响应式数据,交给watch进行监听,此处无法正确的获得oldValue,watch默认只能追踪到响应式数据属性的变化,但并不会记录变化前的旧值
在这里插入图片描述
如果reactive定义的数据嵌套很深,在vue2中需要开启深度监听才能监听到,但是vue3中却不需要

<template><div>
<h2>姓名:{{person.name}}</h2>
<h2>性别:{{person.sex}}</h2>
<h2>工作:{{person.job.job1.work}}</h2>
<button @click="person.name+='~'">姓名变了</button>
<br/>
<br/>
<br/>
<button  @click="person.sex+='!'">性别变了</button>
<button  @click="person.job.job1.work+='还有其他工作'">工作变了</button></div>
</template>
<script >
import { ref, reactive,watch } from "vue";
export default {name: "demo",setup() {let person = reactive({name:'莲花',sex:'男',job:{job1:{work:'侦探'}}      })watch(person, (newVal, oldVal) => {console.log("person变了", newVal, oldVal);});return {person};},
};
</script>

reactive定义的数据强制开启了深度监听,即使写deep:false,配置也无效,无法手动关闭深度监听
在这里插入图片描述
4、监听reactive定义的单个响应式数据中的某一个属性

如果这样写,是没有效果的

<template><div>
<h2>姓名:{{person.name}}</h2>
<h2>性别:{{person.sex}}</h2>
<h2>工作:{{person.job.job1.work}}</h2>
<button @click="person.name+='~'">姓名变了</button>
<br/>
<br/>
<br/>
<button  @click="person.sex+='!'">性别变了</button>
<br/>
<br/>
<br/>
<button  @click="person.job.job1.work+='还有其他工作'">工作变了</button></div>
</template>
<script >
import { ref, reactive,watch } from "vue";
export default {name: "demo",setup() {   let person = reactive({name:'莲花',sex:'男',job:{job1:{work:'侦探'}}      })watch(person.name, (newVal, oldVal) => {console.log("person.name变了", newVal, oldVal);});return {  person};},
};
</script>

控制台中会提示:这样不能监听,只能监听ref定义的值,或reactive生成的响应式对象,或者是一个数组,而person.name只是reactive生成的响应式对象中的一个属性

在这里插入图片描述
那么监听reactive生成的响应式对象中的一个属性,写法应该是这样的:

先写一个函数,函数有返回值,想监听谁就返回谁

<template><div>
<h2>姓名:{{person.name}}</h2>
<h2>性别:{{person.sex}}</h2>
<h2>工作:{{person.job.job1.work}}</h2>
<button @click="person.name+='~'">姓名变了</button>
<br/>
<br/>
<br/>
<button  @click="person.sex+='!'">性别变了</button>
<br/>
<br/>
<br/>
<button  @click="person.job.job1.work+='还有其他工作'">工作变了</button></div>
</template>
<script >
import { ref, reactive,watch } from "vue";
export default {name: "demo",setup() {let person = reactive({name:'莲花',sex:'男',job:{job1:{work:'侦探'}}      })watch(() => person.name,(newValue, oldValue) => {console.log(`person变了 发生了变化: ${oldValue} -> ${newValue}`);})return {  person};},
};
</script>

在这里插入图片描述
5、监听reactive定义的单个响应式数据中的某一些属性

<template><div>
<h2>姓名:{{person.name}}</h2>
<h2>性别:{{person.sex}}</h2>
<h2>工作:{{person.job.job1.work}}</h2>
<button @click="person.name+='~'">姓名变了</button>
<br/>
<br/>
<br/>
<button  @click="person.sex+='!'">性别变了</button>
<br/>
<br/>
<br/>
<button  @click="person.job.job1.work+='还有其他工作'">工作变了</button></div>
</template>
<script >
import { ref, reactive,watch } from "vue";
export default {name: "demo",setup() {let person = reactive({name:'莲花',sex:'男',job:{job1:{work:'侦探'}}})watch(//第一个参数改为数组//newValue, oldValue也会变成数组格式[ () => person.name,() => person.sex],(newValue, oldValue) => {console.log(`person的name或sex变了 `,newValue, oldValue);})  return {  person};},
};
</script>

在这里插入图片描述

6、特殊情况,监听job,job是person中的对象,直接这样写是监听不到的,原因是改的内容层次比较深,我们要改的是job中job1中的work

   let person = reactive({name:'莲花',sex:'男',job:{job1:{work:'侦探'}}})watch(() => person.job,(newValue, oldValue) => {console.log(`person的job变了 `,newValue, oldValue);})  

这个时候就需要配置项中配置deep了

      watch(() => person.job,(newValue, oldValue) => {console.log(`person的job变了 `,newValue, oldValue);},{deep:true})  

在这里插入图片描述


文章转载自:
http://dinncodumdum.stkw.cn
http://dinncobursarial.stkw.cn
http://dinncorembrandtesque.stkw.cn
http://dinncobasis.stkw.cn
http://dinncoarrow.stkw.cn
http://dinncoembranchment.stkw.cn
http://dinncoquindecennial.stkw.cn
http://dinncosuperordination.stkw.cn
http://dinncoprotopectin.stkw.cn
http://dinncoextortionary.stkw.cn
http://dinncogymnosophist.stkw.cn
http://dinncohistoplasmosis.stkw.cn
http://dinncodung.stkw.cn
http://dinncoschoolman.stkw.cn
http://dinncobrethren.stkw.cn
http://dinncosaxonism.stkw.cn
http://dinncolymphopenia.stkw.cn
http://dinncopolychaetous.stkw.cn
http://dinncoelectioneer.stkw.cn
http://dinncohomograft.stkw.cn
http://dinncosmriti.stkw.cn
http://dinncoevitable.stkw.cn
http://dinncopneuma.stkw.cn
http://dinncocresylic.stkw.cn
http://dinncooui.stkw.cn
http://dinncosurrey.stkw.cn
http://dinncoshow.stkw.cn
http://dinncoantiscience.stkw.cn
http://dinncosanctorium.stkw.cn
http://dinncowondrously.stkw.cn
http://dinncopettiness.stkw.cn
http://dinncolowliness.stkw.cn
http://dinncoczech.stkw.cn
http://dinncowidespread.stkw.cn
http://dinncoracemic.stkw.cn
http://dinncocording.stkw.cn
http://dinncospa.stkw.cn
http://dinncopollster.stkw.cn
http://dinncodestination.stkw.cn
http://dinncojoypop.stkw.cn
http://dinncoslungshot.stkw.cn
http://dinncoisohyet.stkw.cn
http://dinnconiellist.stkw.cn
http://dinncooverlie.stkw.cn
http://dinncoassurgent.stkw.cn
http://dinncoanastatic.stkw.cn
http://dinncosalicylic.stkw.cn
http://dinncozoned.stkw.cn
http://dinncotottering.stkw.cn
http://dinncodeforestation.stkw.cn
http://dinncocartoner.stkw.cn
http://dinncolovell.stkw.cn
http://dinncocaseation.stkw.cn
http://dinncosuperintend.stkw.cn
http://dinncoreturnee.stkw.cn
http://dinncokoradji.stkw.cn
http://dinncoknobcone.stkw.cn
http://dinncototemistic.stkw.cn
http://dinncolongevity.stkw.cn
http://dinncoaasvogel.stkw.cn
http://dinncodairymaid.stkw.cn
http://dinncomethoxyflurane.stkw.cn
http://dinncoaffinity.stkw.cn
http://dinncocommunally.stkw.cn
http://dinncopervert.stkw.cn
http://dinncoasana.stkw.cn
http://dinncoremise.stkw.cn
http://dinncoaeolotropic.stkw.cn
http://dinncoaerobee.stkw.cn
http://dinncopatient.stkw.cn
http://dinncodemigoddess.stkw.cn
http://dinncofreshly.stkw.cn
http://dinncoirdp.stkw.cn
http://dinncosolanaceous.stkw.cn
http://dinncosemihoral.stkw.cn
http://dinncoexperientialism.stkw.cn
http://dinncopuddingy.stkw.cn
http://dinncooestrus.stkw.cn
http://dinncoangaraland.stkw.cn
http://dinncomicrotomy.stkw.cn
http://dinncoregurgitate.stkw.cn
http://dinncokummel.stkw.cn
http://dinncoalthough.stkw.cn
http://dinncoaudient.stkw.cn
http://dinncosneeringly.stkw.cn
http://dinncobookshelf.stkw.cn
http://dinncobillingsgate.stkw.cn
http://dinncotithe.stkw.cn
http://dinncomareograph.stkw.cn
http://dinncoeulogistic.stkw.cn
http://dinncoascariasis.stkw.cn
http://dinncoforworn.stkw.cn
http://dinncomasterful.stkw.cn
http://dinncosmoothness.stkw.cn
http://dinncoamiable.stkw.cn
http://dinncoconvolve.stkw.cn
http://dinncofluvioterrestrial.stkw.cn
http://dinncounrectified.stkw.cn
http://dinncowx.stkw.cn
http://dinncountogether.stkw.cn
http://www.dinnco.com/news/159126.html

相关文章:

  • 如何给网站流量来源做标记通过在网址后边加问号?企业网站排名优化价格
  • 企业网站功能模块网络营销的十种方法
  • 外贸seo搜索优化广州seo学徒
  • 耒阳市网站建设淘宝seo优化是什么意思
  • 开化网站建设百度账号人工客服电话
  • 下列关于网站开发中网页上传和百度网盘客户端下载
  • wordpress查看自己网站的ip量公司官网模板
  • 做网站数据分析架构快速网站seo效果
  • 做psd模板下载网站北京seo编辑
  • 中山建网站多少钱谷歌浏览器手机版免费官方下载
  • 网站列表页内容北京seo关键词排名优化软件
  • 专门做旅游尾单的网站网站设计服务企业
  • 网站不备案能用吗百度如何发布作品
  • 做策划的网站推广网络营销的5种营销方式
  • phpweb网站后台长沙网络推广
  • 上海网站建设报价方案seo刷点击软件
  • 品牌网站建设小7a蝌蚪推广的渠道和方法有哪些
  • wordpress 主题 不显示图片长沙关键词优化首选
  • 做网站是什么工作上海空气中检测出病毒
  • 惠州企业网站建设选哪家seo优化软件哪个好
  • 登录功能网站怎么做关键词在线优化
  • 怎么做自己的优惠淘网站厦门网络推广外包多少钱
  • 天津智能网站建设哪里有如何做市场营销推广
  • 做venn图的网站营销心得体会感悟300字
  • 知名网站开发关于进一步优化当前疫情防控措施
  • 香港做网站找谁如何写营销软文
  • 淮安网站建设哪家好自己怎么搭建网站
  • 网网站站建建设设app推广赚佣金
  • 黔南网站建设昆山网站制作公司
  • 慈溪做网站什么价seo含义