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

网站建设收费价格深圳关键词优化报价

网站建设收费价格,深圳关键词优化报价,wordpress首页全屏插件,我国外贸企业网站建设文章底部有个人公众号#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享#xff1f; 踩过的坑没必要让别人在再踩#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官#xff1a;Vue.observable你有了解… 文章底部有个人公众号热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享 踩过的坑没必要让别人在再踩自己复盘也能加深记忆。利己利人、所谓双赢。 面试官Vue.observable你有了解过吗说说看 一、Observable 是什么 Observable 翻译过来我们可以理解成可观察的 我们先来看一下其在Vue中的定义 Vue.observable让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象 返回的对象可以直接用于渲染函数和计算属性内并且会在发生变更时触发相应的更新。也可以作为最小化的跨组件状态存储器 Vue.observable({ count : 1})其作用等同于 new vue({ count : 1})在 Vue 2.x 中被传入的对象会直接被 Vue.observable 变更它和被返回的对象是同一个对象 在 Vue 3.x 中则会返回一个可响应的代理而对源对象直接进行变更仍然是不可响应的 二、使用场景 在非父子组件通信时可以使用通常的bus或者使用vuex但是实现的功能不是太复杂而使用上面两个又有点繁琐。这时observable就是一个很好的选择 创建一个js文件 // 引入vue import Vue from vue // 创建state对象使用observable让state对象可响应 export let state Vue.observable({name: 张三,age: 38 }) // 创建对应的方法 export let mutations {changeName(name) {state.name name},setAge(age) {state.age age} }在.vue文件中直接使用即可 templatediv姓名{{ name }}年龄{{ age }}button clickchangeName(李四)改变姓名/buttonbutton clicksetAge(18)改变年龄/button/div /template import { state, mutations } from /store export default {// 在计算属性中拿到值computed: {name() {return state.name},age() {return state.age}},// 调用mutations里面的方法更新数据methods: {changeName: mutations.changeName,setAge: mutations.setAge} }三、原理分析 源码位置src\core\observer\index.js export function observe (value: any, asRootData: ?boolean): Observer | void {if (!isObject(value) || value instanceof VNode) {return}let ob: Observer | void// 判断是否存在__ob__响应式属性if (hasOwn(value, __ob__) value.__ob__ instanceof Observer) {ob value.__ob__} else if (shouldObserve !isServerRendering() (Array.isArray(value) || isPlainObject(value)) Object.isExtensible(value) !value._isVue) {// 实例化Observer响应式对象ob new Observer(value)}if (asRootData ob) {ob.vmCount}return ob } Observer类 export class Observer {value: any;dep: Dep;vmCount: number; // number of vms that have this object as root $dataconstructor (value: any) {this.value valuethis.dep new Dep()this.vmCount 0def(value, __ob__, this)if (Array.isArray(value)) {if (hasProto) {protoAugment(value, arrayMethods)} else {copyAugment(value, arrayMethods, arrayKeys)}this.observeArray(value)} else {// 实例化对象是一个对象进入walk方法this.walk(value)} }walk函数 walk (obj: Object) {const keys Object.keys(obj)// 遍历key通过defineReactive创建响应式对象for (let i 0; i keys.length; i) {defineReactive(obj, keys[i])} }defineReactive方法 export function defineReactive (obj: Object,key: string,val: any,customSetter?: ?Function,shallow?: boolean ) {const dep new Dep()const property Object.getOwnPropertyDescriptor(obj, key)if (property property.configurable false) {return}// cater for pre-defined getter/settersconst getter property property.getconst setter property property.setif ((!getter || setter) arguments.length 2) {val obj[key]}let childOb !shallow observe(val)// 接下来调用Object.defineProperty()给对象定义响应式属性Object.defineProperty(obj, key, {enumerable: true,configurable: true,get: function reactiveGetter () {const value getter ? getter.call(obj) : valif (Dep.target) {dep.depend()if (childOb) {childOb.dep.depend()if (Array.isArray(value)) {dependArray(value)}}}return value},set: function reactiveSetter (newVal) {const value getter ? getter.call(obj) : val/* eslint-disable no-self-compare */if (newVal value || (newVal ! newVal value ! value)) {return}/* eslint-enable no-self-compare */if (process.env.NODE_ENV ! production customSetter) {customSetter()}// #7981: for accessor properties without setterif (getter !setter) returnif (setter) {setter.call(obj, newVal)} else {val newVal}childOb !shallow observe(newVal)// 对观察者watchers进行通知,state就成了全局响应式对象dep.notify()}}) }
http://www.dnsts.com.cn/news/59157.html

相关文章:

  • 微信上打开连接的网站怎么做的wordpress api下载文件
  • 梅州专业网站建设教程网站建设费用要多少
  • 怎么让百度收录网站所有网页你就知道
  • 常州高端模板建站wordpress 主题和插件
  • 网站建设招标合同要求聊城市网站建设公司
  • 做网站借用网络图片不违法吧wordpress页面模板目录文件
  • 上海网站排名seo公司哪家好wordpress 页面属性 模版
  • 揭阳网站建设托管wordpress 板块
  • 网站静态和伪静态意思dede网站幻灯片
  • 省建设厅网站安全生产标准化天津seo建站
  • 网页设计与网站建设在线作业设计单位在厦门什么网站
  • 网站内容建设注意事项网站建设推广咨询平台
  • 全美东莞网站建设网站 建设 计划
  • 南京专业网站制作多少钱wordpress智能
  • 重庆网站seo多少钱互联网营销案例
  • 郑州手机网站推广外包让别人看到自己做的网站
  • 如何建网站运营网站品牌创意型网站建设
  • 射阳网站开发天宁寺网站建设
  • 中国建设银行官网站e路护航下载网站建设好不好
  • 如何做地方网站制作ppt的网站
  • 企业网站建设网站模板wordpress+一页一屏
  • 宁波网站建设seowordpress有后台吗
  • 口碑好的高密网站建设清新织梦淘宝客模板淘客网站程序源码
  • 建站怎么建阿里云wordpress一键安装包
  • iis怎么创建网站做360网站首页软件
  • 鼓楼机关建设网站一级造价工程师注册管理系统
  • 怎么做免费网站教程服装企业网站建设现状
  • 修改wordpress用户名廊坊百度提升优化
  • 免费建造网站系统精准营销模型
  • 鹿泉网站制作公司胖子马wordpress模板 q8免费版