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

顶呱呱集团 网站建设百度热搜 百度指数

顶呱呱集团 网站建设,百度热搜 百度指数,网站可以自己维护吗,沈阳网页设计培训目录 1.ref函数 2.reactive函数 3.reactive对比ref 4.computed函数 5.watch函数 6.toRef 7..provide && inject 1.ref函数 作用: 定义一个响应式的数据 语法: const xxx ref(initValue) 创建一个包含响应式数据的引用对象(reference对象&#xff…

目录

1.ref函数

2.reactive函数

3.reactive对比ref

4.computed函数

5.watch函数

6.toRef

7..provide && inject

1.ref函数

  • 作用: 定义一个响应式的数据

  • 语法: const xxx = ref(initValue)

    • 创建一个包含响应式数据的引用对象(reference对象,简称ref对象)

    • JS中操作数据xxx.value

    • 模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>

  • 备注:

    • 接收的数据可以是:基本类型、也可以是对象类型

    • 基本类型的数据:响应式依然是靠Object.defineProperty()getset完成的。

    • 对象类型的数据:内部 “ 求助 ” 了Vue3.0中的一个新函数—— reactive函数。

2.reactive函数

  • 作用: 定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数

  • 语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)

  • reactive定义的响应式数据是“深层次的”。

  • 内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作

  • reactive 方法是用来创建一个响应式的数据对象,该API也很好地解决了Vue2通过 defineProperty 实现数据响应式的缺陷

3.reactive对比ref

  • 从定义数据角度对比:

    • ref用来定义:基本类型数据

    • reactive用来定义:对象(或数组)类型数据

    • 备注:ref也可以用来定义对象(或数组)类型数据, 它内部会自动通过reactive转为代理对象

  • 从原理角度对比:

    • ref通过Object.defineProperty()getset来实现响应式(数据劫持)。

    • reactive通过使用Proxy来实现响应式(数据劫持), 并通过Reflect操作源对象内部的数据。

  • 从使用角度对比:

    • ref定义的数据:操作数据需要.value,读取数据时模板中直接读取不需要.value

    • reactive定义的数据:操作数据与读取数据:均不需要.value

4.computed函数

import {computed} from 'vue'setup(){...//计算属性——简写let fullName = computed(()=>{return person.firstName + '-' + person.lastName})
// 为什么说是computed的完整形式呢,因为computed的简写形式只是单独的完成了读的功能,而没办法去更改firstName 和lastName的值,下面我们进行computed的完整形式。//计算属性——完整let fullName = computed({get(){return person.firstName + '-' + person.lastName},set(value){const nameArr = value.split('-')person.firstName = nameArr[0]person.lastName = nameArr[1]}})
}

5.watch函数

当被监视的属性变化时,回调函数自动调用,进行相关操作,所谓监视属性,就是监测指定的属性是否发生变化,如果发生了,则进行一系列操作,如果没发生变化,则监视属性也不会被触发。

  • 与Vue2.x中watch配置功能一致

  • 两个小“坑”:

    • 监视reactive定义的响应式数据时:oldValue无法正确获取、强制开启了深度监视(deep配置失效)。

    • 监视reactive定义的响应式数据中某个属性时:deep配置有效。

//情况一:监视ref定义的响应式数据
watch(sum,(newValue,oldValue)=>{
    console.log('sum变化了',newValue,oldValue)
},{immediate:true})
 

//情况二:监视多个ref定义的响应式数据
watch([sum,msg],(newValue,oldValue)=>{
    console.log('sum或msg变化了',newValue,oldValue)
})  

/* 情况三:监视reactive定义的响应式数据

此时vue3将强制开启deep深度监听

当监听值为proxy对象时,oldValue值将出现异常,此时与newValue相同
            若watch监视的是reactive定义的响应式数据,则无法正确获得oldValue!!
            若watch监视的是reactive定义的响应式数据,则强制开启了深度监视 
*/
watch(person,(newValue,oldValue)=>{
    console.log('person变化了',newValue,oldValue)
},{immediate:true,deep:false}) //此处的deep配置不再奏效
 

 

//情况四:监视reactive定义的响应式数据中的某个属性
watch(()=>person.job,(newValue,oldValue)=>{
    console.log('person的job变化了',newValue,oldValue)
},{immediate:true,deep:true}) 

//情况五:监视reactive定义的响应式数据中的某些属性
watch([()=>person.job,()=>person.name],(newValue,oldValue)=>{
    console.log('person的job变化了',newValue,oldValue)
},{immediate:true,deep:true})

//特殊情况
watch(()=>person.job,(newValue,oldValue)=>{
    console.log('person的job变化了',newValue,oldValue)
},{deep:true}) //此处由于监视的是reactive素定义的对象中的某个属性,所以deep配置有效

 

6.toRef

toRef 是将某个对象中的某个值转化为响应式数据,其接收两个参数,第一个参数为 obj 对象;第二个参数为对象中的属性名

  • 作用:创建一个 ref 对象,其value值指向另一个对象中的某个属性。

  • 语法:const name = toRef(person,'name')

  • 应用: 要将响应式对象中的某个属性单独提供给外部使用时。

  • 扩展:toRefstoRef功能一致,但可以批量创建多个 ref 对象,语法:toRefs(person)

<script>
// 1. 导入 toRef
import {toRef} from 'vue'
export default {setup() {const obj = {count: 3}// 2. 将 obj 对象中属性count的值转化为响应式数据const state = toRef(obj, 'count')// 3. 将toRef包装过的数据对象返回供template使用return {state}}
}
</script>

7..provide && inject

假设这有三个组件,分别是 A.vue 、B.vue 、C.vue,其中 B.vue 是 A.vue 的子组件,C.vue 是 B.vue 的子组件

// A.vue
<script>
import {provide} from 'vue'
export default {setup() {const obj= {name: '前端印象',age: 22}// 向子组件以及子孙组件传递名为info的数据provide('info', obj)}
}
</script>// B.vue
<script>
import {inject} from 'vue'
export default {setup() {	// 接收A.vue传递过来的数据inject('info')  // {name: '前端印象', age: 22}}
}
</script>// C.vue
<script>
import {inject} from 'vue'
export default {setup() {	// 接收A.vue传递过来的数据inject('info')  // {name: '前端印象', age: 22}}
}
</script>

http://www.yidumall.com/news/84670.html

相关文章:

  • bootsrap做app网站seo优化一般多少钱
  • wordpress支持哪些数据库南宁百度seo价格
  • 网站首页制作怎么做的百度提交收录
  • json做网站的数据库怎么找百度客服
  • 新媒体、网站建设 管理规范广州代运营公司有哪些
  • 做视频网站多大空间够谷歌广告联盟怎么做
  • 做网站不打广告怎么赚钱企业网站推广的方法
  • 佛山市住房和城乡建设委员会网站百度地图收录提交入口
  • 互联网网站开发的未来方向搜狗搜索引擎入口
  • zencart 网站迁移seo高级教程
  • 怎么做网站服务器免费建站平台哪个好
  • 做冻品的网站实体店营销方案
  • 电脑城网站开发需求分析市场推广计划方案
  • 专业的东莞网站设计百度网盘下载速度慢破解方法
  • 瑞安公司做网站百度精准搜索
  • 科技公司网站模板官网seo黑帽技术工具
  • 庐山网站建设推广方案如何写
  • 公司网站建设属于软件销售买号链接
  • 网站做302跳转的意义seo推广沧州公司电话
  • 做网站前端用什么语言企业网络营销策划书
  • 深圳网博网站建设谷歌seo优化中文章
  • 物联网官网seo网络营销招聘
  • 学校网站建设报价单山西seo优化公司
  • 视频怎样连接到wordpress针对百度关键词策划和seo的优化
  • 自己做的网站怎么推广老客外链
  • 南宁百度网站设计zac seo博客
  • 网站开发语言哪个好北京百度推广优化
  • 网站流量平台张家界百度seo
  • 东莞专业的网站建设网络推广怎样和政府交换友链
  • 静安区品牌网站建设市场营销方案怎么写