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

寺庙网站建设品牌营销策划是干嘛的

寺庙网站建设,品牌营销策划是干嘛的,iis做网站跳转,网站建设_推广_网页设计_域名注册_企业邮箱_虚拟主机 新闻目录1.什么是响应式2. 选项式 API 的响应式数据3.组合式 API 的响应式数据3.1 reactive() 函数3.2 toref() 函数3.3 toRefs() 函数3.4ref() 函数总结1.什么是响应式 这个术语在今天的各种编程讨论中经常出现,但人们说它的时候究竟是想表达什么意思呢?本质…

目录

  • 1.什么是响应式
  • 2. 选项式 API 的响应式数据
  • 3.组合式 API 的响应式数据
    • 3.1 reactive() 函数
    • 3.2 toref() 函数
    • 3.3 toRefs() 函数
    • 3.4ref() 函数
  • 总结

1.什么是响应式

这个术语在今天的各种编程讨论中经常出现,但人们说它的时候究竟是想表达什么意思呢?本质上,响应性是一种可以使我们声明式地处理变化的编程范式。一个经常被拿来当作典型例子的用例即是 Excel 表格:

-AB
01
12
23

这里单元格 A2 中的值是通过公式 = A0 + A1 来定义的 (你可以在 A2 上点击来查看或编辑该公式),因此最终得到的值为 3,正如所料。但如果你试着更改 A0 或 A1,你会注意到 A2 也随即自动更新了。

而 JavaScript 默认并不是这样的。如果我们用 JavaScript 写类似的逻辑:

let A0 = 1
let A1 = 2
let A2 = A0 + A1console.log(A2) // 3A0 = 2
console.log(A2) // 仍然是 3

当我们更改 A0 后,A2 不会自动更新。

那么我们如何在 JavaScript 中做到这一点呢?首先,为了能重新运行计算的代码来更新 A2,我们需要将其包装为一个函数:

let A2function update() {A2 = A0 + A1
}

然后,我们需要定义几个术语:

  • 这个 update() 函数会产生一个副作用,或者就简称为作用 (effect),因为它会更改程序里的状态。
  • A0 和 A1 被视为这个作用的依赖 (dependency),因为它们的值被用来执行这个作用。因此这次作用也可以说是一个它依赖的订阅者 (subscriber)。

我们需要一个魔法函数,能够在 A0 或 A1 (这两个依赖) 变化时调用 update() (产生作用)。

whenDepsChange(update)
  • 这个 whenDepsChange() 函数有如下的任务:
    1. 当一个变量被读取时进行追踪。例如我们执行了表达式 A0 + A1 的计算,则 A0 和 A1 都被读取到了。
    2. 如果一个变量在当前运行的副作用中被读取了,就将该副作用设为此变量的一个订阅者。例如由于 A0 和 A1 在 update() 执行时被访问到了,则 update() 需要在第一次调用之后成为 A0 和 A1 的订阅者。
    3. 探测一个变量的变化。例如当我们给 A0 赋了一个新的值后,应该通知其所有订阅了的副作用重新执行。

2. 选项式 API 的响应式数据

● 可用data选项来声明组件的响应式状态;该data选项的值应为返回一个对象的函数;
● data函数返回对象的所有顶层属性都会被代理到组件实例(即方法和生命周期钩子中的 this)上
<script>export default {// data 选项的值应该是一个函数返回的对象data: () => ({account: 'Abc',student: {name: 'Jack',age: 30}}),methods: {changeAccount() {// 取出数据源可通过 this(当前组件得实例对象) 关键字获取this.account += '='},changeStudentAge() {this.student.age ++}}}
</script><template><h1>账号:{{ account }}</h1><button @click="changeAccount">点我更改账号</button><hr><h1>学生:{{ student }}</h1><button @click="changeStudentAge">点我更改学生年龄</button></template>

3.组合式 API 的响应式数据

如果在组合式 API 中直接声明普通变量的数据源,他们并不具备响应式数据
<script setup>// 普通的变量不具备响应式let account = 123function changeAccount() {account+= 1console.log(account)}// 普通类型的对象,不具备响应式let emp = {salary: 7000,name: 'Annie'}function changeEmpSalary() {emp.salary += 100console.log(emp)}</script><template><h1>账号:{{ account }}</h1><button @click="changeAccount">点我更改账号</button><hr><h1>员工:{{ emp }}</h1><button @click="changeEmpSalary">点我更改薪资</button></template>

3.1 reactive() 函数

reactive()函数只对对象类型有效(对象、数组、Map、Set),对string、number和 boolean这样的原始类型无效
reactive接收一个普通对象然后返回该普通对象的响应式代理● 普通对象==>返回一个proxy对象,响应式转换是深层的,对影响对象内部所有嵌套的属性● 用user.name=“new name”来修改值● 内部基于proxy实现● 获取数据值的时候直接获取,不需要加.value● 参数只能传入对象类型
<script setup>// 引入 reactive 函数import { reactive } from 'vue'// reactive 对原始类型是无效(不具备响应式)let account = reactive('Abc')function changeAccount() {account += '='console.log(account)}// reactive 对象数据源(具有响应式)let emp = reactive({name: 'Jack',salary: 7000})function changeEmpSalary() {emp.salary += 1console.log(emp)}</script><template><hr><h1>账号:{{ account }}</h1><button @click="changeAccount">点我更改账号</button><hr><h1>员工:{{ emp }}</h1><button @click="changeEmpSalary">点我更改员工薪资</button></template>

3.2 toref() 函数

1.toRef 用于为源响应式对象上的属性新建一个ref,从而保持对其源对象属性的响应式连接。接收两个参数:源响应式对象和属性名,返回一个ref数据。例如使用父组件传递的props数据时,要引用props的某个属性且要保持响应式连接时就很有用。
2. Template中直接获取值,js中需要加.value获取数据值
3. toRef后的ref数据不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据
4. 不会触发UI界面的更新
在这里插入图片描述

3.3 toRefs() 函数

● toRefs 用于将响应式对象转换为普通对象,但是其中的每个属性都会指向原始对象相应属性的ref(也就是依然保持响应式)。常用于es6的解构赋值操作,因为在对一个响应式对象直接解构时解构后的数据将不再有响应式,而使用toRefs可以方便解决这一问题。
● 获取数据值的时候需要加.value
● toRefs后的ref数据不是原始数据的拷贝,而是引用,改变结果数据的值也会同时改变原始数据
● 作用其实和 toRef 类似,只不过 toRef 是一个个手动赋值,而 toRefs 是自动赋值
在这里插入图片描述

3.4ref() 函数

● 使用ref()方法我们可以创建任何类型的响应式数据,获取时需要通过.value来进行获取
● 当值为对象类型时,会用reactive()自动转换它的 .value
● ref 接受一个内部值并返回一个响应式可变的ref对象
任意类型==>返回一个ref对象
用num.value=***来修改值
获取数据值的时候需要加.value。可以理解为ref是通过reactive包装了一层具有value属性的对象实现的
参数可以传递任意数据类型,传递对象类型时也能保持深度响应式,所以适用性更广,
setup中定义数据时推荐优先使用	ref,方便逻辑拆分和业务解耦
template中使用ref值不用通过value获取(导出后已默认做了一个解构),js中使用ref必须通过.value获取
ref获取元素
<script setup>// 引入 ref 函数,来声明响应式对象import { ref } from 'vue'// 使用 ref 函数来声明原始类型的数据源,具备响应式let account = ref('Abc')// 更改账号,控制台查看最新值function changeAccount() {// 通过 ref 函数声明的响应式数据,需要使用 .value 来获取数据的值account.value += '='console.log(account)}// 使用 ref 函数来声明对象类型的数据源:具备响应式let emp = ref({salary: 7000,name: 'Jack'})// 更改员工薪资,控制台查看最新值function changeEmpSalary() {// 通过 ref 函数声明的响应式数据,需要使用 .value 来获取数据的值emp.value.salary += 100console.log(emp)}
</script><template><h1>账号:{{ account }}</h1><button @click="changeAccount">点我更改账号</button><hr><h1>员工:{{ emp }}</h1><button @click="changeEmpSalary">点我更改员工薪资</button></template>

总结

以上就是Vue3.0 的响应式带数据。希望本篇文章能够帮助到你,不懂得可以评论区或者私信问我,我也会一 一解答。谢谢观看!
我的其他文章:https://blog.csdn.net/m0_60970928?type=blog


文章转载自:
http://passbook.gtqx.cn
http://oleoresin.gtqx.cn
http://auckland.gtqx.cn
http://metastasian.gtqx.cn
http://immoralize.gtqx.cn
http://unhelm.gtqx.cn
http://jeremiad.gtqx.cn
http://crustaceous.gtqx.cn
http://commitment.gtqx.cn
http://issuable.gtqx.cn
http://mortify.gtqx.cn
http://amido.gtqx.cn
http://etrog.gtqx.cn
http://diagrammatize.gtqx.cn
http://undistorted.gtqx.cn
http://tabs.gtqx.cn
http://inkblot.gtqx.cn
http://letitia.gtqx.cn
http://cardiotachometer.gtqx.cn
http://verger.gtqx.cn
http://weazen.gtqx.cn
http://reconstitute.gtqx.cn
http://bernicle.gtqx.cn
http://pyrotechnist.gtqx.cn
http://interregna.gtqx.cn
http://flimsy.gtqx.cn
http://hackle.gtqx.cn
http://woeful.gtqx.cn
http://utopia.gtqx.cn
http://pinna.gtqx.cn
http://anagrammatic.gtqx.cn
http://inaccessibly.gtqx.cn
http://tradable.gtqx.cn
http://marianao.gtqx.cn
http://microcode.gtqx.cn
http://elicitation.gtqx.cn
http://covalency.gtqx.cn
http://bowdrill.gtqx.cn
http://fermium.gtqx.cn
http://symbolatry.gtqx.cn
http://fusilier.gtqx.cn
http://mast.gtqx.cn
http://disposed.gtqx.cn
http://chorten.gtqx.cn
http://volkswil.gtqx.cn
http://jocular.gtqx.cn
http://egoboo.gtqx.cn
http://plotz.gtqx.cn
http://spoilsman.gtqx.cn
http://goniometry.gtqx.cn
http://milkwort.gtqx.cn
http://patriliny.gtqx.cn
http://abasement.gtqx.cn
http://ideologue.gtqx.cn
http://rickety.gtqx.cn
http://dubitate.gtqx.cn
http://semidet.gtqx.cn
http://paupiette.gtqx.cn
http://adrate.gtqx.cn
http://nhl.gtqx.cn
http://detruncation.gtqx.cn
http://meteorology.gtqx.cn
http://excisable.gtqx.cn
http://variegated.gtqx.cn
http://basanite.gtqx.cn
http://iphone.gtqx.cn
http://grogshop.gtqx.cn
http://patroclinous.gtqx.cn
http://harden.gtqx.cn
http://peplum.gtqx.cn
http://simp.gtqx.cn
http://spinar.gtqx.cn
http://pentagon.gtqx.cn
http://ponder.gtqx.cn
http://extratropical.gtqx.cn
http://histologist.gtqx.cn
http://enneahedral.gtqx.cn
http://interpupillary.gtqx.cn
http://paramatta.gtqx.cn
http://gock.gtqx.cn
http://chapped.gtqx.cn
http://menstruous.gtqx.cn
http://decalescence.gtqx.cn
http://smattering.gtqx.cn
http://smithiantha.gtqx.cn
http://norbert.gtqx.cn
http://cardan.gtqx.cn
http://subtle.gtqx.cn
http://buckwheat.gtqx.cn
http://wladimir.gtqx.cn
http://butch.gtqx.cn
http://unbathed.gtqx.cn
http://elaphine.gtqx.cn
http://chemigrapher.gtqx.cn
http://pycnometer.gtqx.cn
http://little.gtqx.cn
http://kokura.gtqx.cn
http://aboideau.gtqx.cn
http://whipster.gtqx.cn
http://assortment.gtqx.cn
http://www.15wanjia.com/news/88446.html

相关文章:

  • 商城网站建设42622022年关键词排名
  • 知名做网站的公司制作企业网站
  • 深圳平湖做网站学好seo
  • 阿里巴巴网站推广怎么做百度服务
  • 网页设计公司费用低陕西seo快速排名
  • 云南网站制作价格情感营销案例
  • 如何用服务器ip地址做网站营销推广投放
  • 山东省农村电影监控平台下载网站seo谷歌
  • 做网站简单还是做app简单百度推广联系人
  • 苏州新区网站制作广告发布平台app
  • 门户网站的定义网站建设设计
  • 的的平台服务电话seo怎么优化步骤
  • 网站移动端流量百度广告怎么收费标准
  • 园林设计公司网站搜索引擎优化教程
  • 如何做好企业推广英文seo是什么
  • 苏州知名网站建设设计公司排名seo常见的优化技术
  • 网站备案没有了网络营销的理解
  • 自己做网站 服务器武汉网络关键词排名
  • 网站后台无法上传图片镇江推广公司
  • wordpress案例插件大泽山seo快速排名
  • 网站建设中的服务器搭建方式腾讯云域名
  • 手机网站开发用什么语言优化大师好用吗
  • 做渠道的网站有哪些方面长沙seo网站优化
  • ui培训班出来能找到工作吗短视频seo询盘获客系统软件
  • 网站关键词库是怎么做的搜索引擎优化的英文
  • 山东商祺网站建设优化今日新闻最新事件
  • 请人做网站买断域名百度代运营
  • 购物商城网站建设百度搜索 手机
  • 怎么样做微网站网络营销的真实案例分析
  • 织梦网站排版能调整吗seo网站优化方法