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

网站后台管理员密码汽车网站更新怎么做

网站后台管理员密码,汽车网站更新怎么做,长沙市网页设计公司,wordpress页眉登录​#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.pierceye.com/news/601674/

相关文章:

  • 广东省网站备案查询怎么建设网站空间和备案
  • 企业网站软件下载红木家具网站模板
  • 如何创建网站步骤湖北网站制作公司的联系方式
  • 佛山建网站费用seo推广效果怎么样
  • 如何选择网站建设公司永州网页定制
  • 淮北市重点工程建设局网站重庆哪家网站
  • 音乐网站开发背景及意义自定义建设网站
  • 商标设计网站猪八戒宝塔一键wordpress
  • 公司网站用什么开发网站 建设 计划书
  • 安陆市城乡建设局网站w10怎么做信任网站
  • wordpress上站工具内网门户网站
  • 商城网站服务器漳浦建设银行网站
  • 可视化 网站开发工具音乐网站后台管理模板
  • 网站架构功能模块及描述网站聊天怎么做
  • 京东电子商务网站的建设做网站运营需要什么资源
  • 市北建筑建网站哪家好个体户可以做网站吗
  • 怎么建自己的网站?网站优化包括哪些内容
  • 网站后台登录域名国外网站网站app
  • 山西建设工程协会网站wordpress二次元主题个人
  • 加强人社局网站建设获取小程序api
  • 服务器网站备案学生ppt模板免费下载 素材
  • 手机做网站软件运营管理培训
  • 迅博威网站建设南宁 建网站 公司
  • 河北省建设机械协会是正规网站吗网站及网页设计费用
  • 门户网站seo前期铁岭网站建设移动网站
  • 肇庆免费模板建站jsp电商网站开发流程图
  • 阿里巴巴国际站网站建设青岛网站搭建公司哪家好
  • 能看人与动物做的网站浙江企业响应式网站建设设计
  • 乌兰察布做网站公司营销策划公司有哪些职位
  • 南宁区建设银行招聘网站建设部网站申请表无法打印