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

网站制作完成之后进入了什么阶段淘客网站做百度推广

网站制作完成之后进入了什么阶段,淘客网站做百度推广,tradekey外贸平台官网,做汽车微信广告视频网站​#x1f308;个人主页#xff1a;前端青山 #x1f525;系列专栏#xff1a;Vue篇 #x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-响应式核心 响应式核心 目录 响应式核心 3.1ref() 3.2computed () 3.3 reactive() 3.4 … ​个人主页前端青山 系列专栏Vue篇 人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-响应式核心 响应式核心 目录 响应式核心 3.1ref() 3.2computed () 3.3 reactive() 3.4 readonly() 3.5 watchEffect() 3.6 watch() 3.1ref() 接受一个内部值返回一个响应式的、可更改的 ref 对象此对象只有一个指向其内部值的属性 .value。 ref 对象是可更改的也就是说你可以为 .value 赋予新的值。它也是响应式的即所有对 .value 的操作都将被追踪并且写操作会触发与之相关的副作用。 如果将一个对象赋值给 ref那么这个对象将通过 reactive() 转为具有深层次响应式的对象。 将一个 ref 赋值给为一个 reactive 属性时该 ref 会被自动解包 const count ref(0) console.log(count.value) // 0 ​ count.value console.log(count.value) // 1 !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleref/title /head bodydiv idapp{{ count }}button clickadd加1/buttonbr/ ​state.count: {{ state.count }}button clickincrement加10/button/div /body script src../lib/vue.global.js/script scriptconst { ref, reactive } VueVue.createApp({setup () {const count ref(10)const add () {count.value 1} ​// 如果将ref赋值给 一个 reactive 属性时该ref会被自动解包 (不需要写.value) - 了解const obj reactive({}) // 剧透 reactive 用于 创建响应式的对象数据obj.count count // 自动解包 不解包 obj.count count.value console.log(obj.count) // 10console.log(obj.count count.value) // true ​// 如果将一个对象赋值给ref那么这个对象将通过 reactive() 转为具有深层次响应的对象 - 了解const state ref({ count: 100 })const increment () {state.value.count 10} ​// 记住 以后定义对象使用 reactive() 其他使用 ref()return {count, add,state,increment}}}).mount(#app) /script /html 以后创建 非 对象类型的数据 使用 ref 创建对象类型的数据建议使用 reactive 3.2computed () 接受一个 getter 函数返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。它也可以接受一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象。 创建一个只读的计算属性 ref const count ref(1) const plusOne computed(() count.value 1) ​ console.log(plusOne.value) // 2 ​ plusOne.value // 错误 创建一个可写的计算属性 ref const count ref(1) const plusOne computed({get: () count.value 1,set: (val) {count.value val - 1} }) ​ plusOne.value 1 console.log(count.value) // 0 !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titlecomputed/title /head bodydiv idapp{{ count }} -- {{ doubleCount }} - {{ plusOne }}button clickupdateCount修改plusOne计算属性的值/button/div /body script src../lib/vue.global.js/script scriptconst { ref, computed } Vueconst setup () {const count ref(10)const doubleCount computed(() count.value * 2) // 可读 ​const plusOne computed({ // 可读 可写set (val) { count.value val},get () { return count.value}}) ​const updateCount () {plusOne.value 100 // 调用可写} ​return {count,doubleCount,plusOne,updateCount}} ​Vue.createApp({ setup }).mount(#app) /script /html 3.3 reactive() 返回一个对象的响应式代理。 响应式转换是“深层”的它会影响到所有嵌套的属性。一个响应式对象也将深层地解包任何 ref 属性同时保持响应性。 值得注意的是当访问到某个响应式数组或 Map 这样的原生集合类型中的 ref 元素时不会执行 ref 的解包。 返回的对象以及其中嵌套的对象都会通过 ES Proxy 包裹因此不等于源对象建议只使用响应式代理避免使用原始对象。 创建一个响应式对象 const obj reactive({ count: 0 }) obj.count ref 的解包 const count ref(1) const obj reactive({ countcount }) ​ // ref 会被解包 console.log(obj.count count.value) // true ​ // 会更新 obj.count count.value console.log(count.value) // 2 console.log(obj.count) // 2 ​ // 也会更新 count ref obj.count console.log(obj.count) // 3 console.log(count.value) // 3 注意当访问到某个响应式数组或 Map 这样的原生集合类型中的 ref 元素时不会执行 ref 的解包 const books reactive([ref(Vue 3 Guide)]) // 这里需要 .value console.log(books[0].value) ​ const map reactive(new Map([[count, ref(0)]])) // 这里需要 .value console.log(map.get(count).value) 将一个 ref 赋值给为一个 reactive 属性时该 ref 会被自动解包讲解ref时已经说明 const count ref(1) const obj reactive({}) ​ obj.count count ​ console.log(obj.count) // 1 console.log(obj.count count.value) // true !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titlereactive/title /head bodydiv idappbutton clickadd加1/button {{ count }} hr /button clickincrement加10/button {{ state.num }}/div /body script src../lib/vue.global.js/script scriptconst { ref, reactive } VueVue.createApp({setup () {const count ref(0)const add () {count.value 1} ​const state reactive({ num: 10 })const increment () {state.num 10} ​return {count, add,state, increment} ​}}).mount(#app) /script /html 初始值 对象 reactive 其余用ref 3.4 readonly() 接受一个对象 (不论是响应式还是普通的) 或是一个 ref返回一个原值的只读代理。 只读代理是深层的对任何嵌套属性的访问都将是只读的。它的 ref 解包行为与 reactive() 相同但解包得到的值是只读的。 const original reactive({ count: 0 }) ​ const copy readonly(original) ​ watchEffect(() {// 用来做响应性追踪console.log(copy.count) }) ​ // 更改源属性会触发其依赖的侦听器 original.count ​ // 更改该只读副本将会失败并会得到一个警告 copy.count // warning !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titlereadonly/title /head bodydiv idappbutton clickadd加1/button {{ count }} hr /button clickincrement加10/button {{ copyCount }}/div /body script src../lib/vue.global.js/script scriptconst { ref, readonly } VueVue.createApp({setup () {const count ref(0)const add () {count.value 1} ​const copyCount readonly(count)const increment () {copyCount.value 10} ​return {count, add,copyCount, increment} ​}}).mount(#app) /script /html 3.5 watchEffect() 立即运行一个函数同时响应式地追踪其依赖并在依赖更改时重新执行。 第一个参数就是要运行的副作用函数。这个副作用函数的参数也是一个函数用来注册清理回调。清理回调会在该副作用下一次执行前被调用可以用来清理无效的副作用例如等待中的异步请求。 返回值是一个用来停止该副作用的函数。 const count ref(0) ​ watchEffect(() console.log(count.value)) // - 输出 0 ​ count.value // - 输出 1 副作用清除 watchEffect((onInvalidate) {console.log(id.value) const timer setTimeout(() {console.log(请求成功) // 2秒之内点击列表 只显示一次data.value 数据 id.value}, 2000)onInvalidate(() {clearTimeout(timer)}) }) 停止侦听器 const stop watchEffect(() {console.log(count.value)})// 当不再需要此侦听器时:const stopWatch () {stop()} !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titlewatchEffect/title /head bodydiv idapp{{ count }}button clickincrement加1/buttonbutton clickstopWatch停止监听/button ​!-- 假设点击第一条数据2秒之内点击第二条消除第一条的数据请求 --ulli clickid1请求第一条数据/lili clickid2请求第二条数据/lili clickid3请求第三条数据/li/ul{{ data }}/div /body script src../lib/vue.global.js/script scriptconst { ref, watchEffect } VueVue.createApp({setup () {const count ref(0)const increment () {count.value} ​const stop watchEffect(() {console.log(count的值为 count.value) }) ​const stopWatch () {stop()} ​const id ref(1)const data ref() ​watchEffect((clear) { // 自定义取消副作用的函数console.log(id.value) // 关键- 引起当前watchEffect的二次执行const timer setTimeout(() {console.log(请求成功) // 2秒之内点击列表 只显示一次data.value 数据 id.value}, 2000) ​// 消除副作用clear(() {clearTimeout(timer)})}) ​return {count, increment, stopWatch, id, data}}}).mount(#app) /script /html watchEffect没有具体监听哪一个值的变化只要内部有某一个状态发生改变就会执行 3.6 watch() 侦听一个或多个响应式数据源并在数据源变化时调用所给的回调函数。 watch() 默认是懒侦听的即仅在侦听源发生变化时才执行回调函数。 第一个参数是侦听器的源。这个来源可以是以下几种 一个函数返回一个值 一个 ref 一个响应式对象 ...或是由以上类型的值组成的数组 第二个参数是在发生变化时要调用的回调函数。这个回调函数接受三个参数新值、旧值以及一个用于注册副作用清理的回调函数。该回调函数会在副作用下一次重新执行前调用可以用来清除无效的副作用例如等待中的异步请求。 当侦听多个来源时回调函数接受两个数组分别对应来源数组中的新值和旧值。 第三个可选的参数是一个对象支持以下这些选项 immediate在侦听器创建时立即触发回调。第一次调用时旧值是 undefined。 deep如果源是对象强制深度遍历以便在深层级变更时触发回调。参考深层侦听器。 与 watchEffect() 相比watch() 使我们可以 懒执行副作用 更加明确是应该由哪个状态触发侦听器重新执行 可以访问所侦听状态的前一个值和当前值。 示例 侦听一个 getter 函数 const state reactive({ count: 0 }) watch(() state.count,(count, prevCount) {/* ... */} ) 侦听一个 ref const count ref(0) watch(count, (count, prevCount) {/* ... */ }) 当侦听多个来源时回调函数接受两个数组分别对应来源数组中的新值和旧值 watch([fooRef, barRef], ([foo, bar], [prevFoo, prevBar]) {/* ... */ }) 当使用 getter 函数作为源时回调只在此函数的返回值变化时才会触发。如果你想让回调在深层级变更时也能触发你需要使用 { deep: true } 强制侦听器进入深层级模式。在深层级模式时如果回调函数由于深层级的变更而被触发那么新值和旧值将是同一个对象。 const state reactive({ count: 0 }) watch(() state,(newValue, oldValue) {// newValue oldValue},{ deep: true } ) 当直接侦听一个响应式对象时侦听器会自动启用深层模式 const state reactive({ count: 0 }) watch(state, () {/* 深层级变更状态所触发的回调 */ }) !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titlewatch/title /head bodydiv idapp{{ count }} button clickcountcount加1/buttonhr/{{ state.num }} button clickstate.numstate.num加1/button/div /body script src../lib/vue.global.js/script scriptconst {ref, reactive, watch} VueVue.createApp({setup () {const count ref(0)watch(count, (newVal, oldVal) { // 直接使用 自动解包console.log(count, newVal, oldVal)})watch(() count.value, (newVal, oldVal) { // 函数形式需要解包console.log(count-fn, newVal, oldVal)}) ​const state reactive({ num: 10 })watch(() state.num, (newVal, oldVal) { console.log(state-num-fn, newVal, oldVal)})watch(() state, (newVal, oldVal) {  // 手动深度侦听console.log(state-num-fn2, newVal, oldVal)}, { deep: true }) ​watch(state, (newVal, oldVal) { // 直接监听响应式对象会自动启动深度侦听console.log(state-num, newVal, oldVal)}) ​// 监听多个响应式对象watch([count, state], ([newCount, newNum], [oldCount, oldNum]) {console.log(newCount, newCount)console.log(oldCount, oldCount)console.log(newNum, newNum)console.log(oldNum, oldNum)})return {count,state}}}).mount(#app) /script /html
http://www.yayakq.cn/news/1690/

相关文章:

  • 网站建设的工作计划长沙公司做网站找哪个公司好
  • 汕头建设网站的公司网站设计与开发公司
  • 一个网站做seo网站建设与运营课程总结
  • 网站应用是什么百度帐号登录
  • 上海最专业的网站建设公司哪家好seo优化的作用
  • 网站优化3个关键词和10个关键词的区别深圳市品牌网站建设
  • 宝安网站推广平台网站建设类型有哪些方面
  • 做视频的网站多少钱网站排名点击工具
  • 某某公司网站建设论文东营网站推广公司
  • 太原建设网站制作网站建设合同违约责任
  • 济南网站排名公司软件开发需要什么技术
  • 泉州网页网站制作2017做网站还赚钱吗
  • 外贸做企业什么网站盐城市住房城乡建设网站
  • 平度市城乡建设局网站上海企业服务云定位
  • 郑州做网站排名公司哪家好成都app定制公司
  • 江西网站设计服务网站建设价格标准
  • 织梦网站管理安装网站开发模块查相似
  • 青岛做网站公司网页设计策划书
  • wordpress快讯杭州seo招聘
  • wordpress站点备份现在写博客还是做网站
  • 重庆网站建设哪家公司好一般通过什么判断鱼的年龄
  • 做个网站多少钱一年静态门户网站源码
  • 帝国cms7.0网站搬家换域名换空间等安装教程深圳最好的区排名
  • 哪些企业网站做的好建设银行泰安培训中心官方网站
  • 微信网站的链接标志图片如何做电商网站主题
  • 网站用户体验优化wordpress 亚马逊插件
  • 网站的标签怎么修改温州专业网站建设
  • 如何查询网站的域名注册微信小程序定义
  • php网站建设难点seo短视频发布
  • 中山网站的优化建站网站赚钱吗