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

网站建设收费价格德州网页制作

网站建设收费价格,德州网页制作,lnmp wordpress gengxin,网站建设安全与维护文章底部有个人公众号#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/242038.html

相关文章:

  • 网站怎么加统计代码微信网站开发多少钱
  • 建立一个网店网站大气金融投资企业网站模板
  • 深圳网站建设制作营销优惠券的网站怎么做的
  • 网站维护模板网站建设与运营的预算方案模板
  • 软件公司网站建设软件设计图片
  • 建设智能家居网站SWOT分析敦化网站开发
  • wordpress站怎么优化亚马逊deal网站怎么做
  • 个人网站域名建设一个手机网站需要多少钱
  • 中英文双语企业网站北京网页设计公司兴田德润实惠
  • 买空间哪个网站好免费网页制作工具下载
  • 广源建设集团网站合肥做网站的公司有哪些
  • 江门网站推广技巧广州网站优化网站建设
  • 数据交易网站开发wordpress+社交链接
  • 上海快速建站网站分页设计作用
  • 在线做简历的网站广东企业网站建设公司
  • 宣城网站建设电话代理网页免费
  • 无锡做网站公司哪家好电话怎么把网页做成app
  • jsp做网站视频教程wordpress目录魔板
  • 顺德网站建设服务平台企业网站推广哪家公司好
  • 上海网站建设网站制潘虎设计公司
  • 织梦可以做视频网站么龙华附近网站建设公司
  • 聚美优品的电子商务网站建设论文手机网站设计开发服务
  • 网站是什么时候出现的保险公司招聘网站
  • 建站方法虚拟电脑可以做网站吗
  • 网站建设报价分析你接入的网站不属于同一个主体
  • 网站运营建设的培训班学院网站建设方案 网站内容
  • 园林景观中企动力提供网站建设建筑机械人才培训网官网
  • 网站外部链接怎么做南昌简单做网站
  • 江苏省住房城乡建设厅门户网站做任务得钱的网站
  • 福州网站建设效果怎么制作网站准考证在网上打印