<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      vue3 手寫組合API

      // 手寫組合API
      
      // 1. shallowReactive 和 reactive
      const reactiveHandler = {
          get(target, prop) {
              console.log('攔截器 get..........', prop)
              return Reflect.get(target, prop)
          },
          set(target, prop, value) {
              console.log('攔截器 set..........', prop, value)
              return Reflect.set(target, prop, value)
          },
          deleteProperty (target, prop) {
              console.log('攔截器 deleteProperty..........', prop)
              return Reflect.deleteProperty(target, prop)
          }
      }
      const shallowReactive = (target) => {
          if (target && typeof target === 'object') {
              return new Proxy(target, reactiveHandler)
          }
          return target
      }
      
      const reactive = (target) => {
          if (target && typeof target === 'object') {
              if (Array.isArray(target)) {
                  target.forEach((item, index) => {
                      target[index] = reactive(item)
                  })
              } else {
                  Object.keys(target).forEach(k => {
                      target[k] = reactive(target[k])
                  })
              }
              return new Proxy(target, reactiveHandler)
          }
          return target
      }
      const reactive = (target) => {
          if (target && typeof target === 'object') {
              for (let k in target) {
                  if (target.hasOwnProperty(k)) {
                      target[k] = reactive(target[k])
                  }
              }
              return new Proxy(target, reactiveHandler)
          }
          return target
      }
      
      
      // 2. shallowReadonly 和 readonly
      const readonlyHandler = {
          get (target, prop) {
              console.log('只讀 get......', prop)
              return Reflect.get(target, prop)
          },
          set (target, prop, value) {
              console.error('只讀不允許修改 set........')
              return true
          },
          deleteProperty (target, prop) {
              console.error('只讀不允許刪除 deleteProperty........')
              return true
          }
      }
      const shallowReadonly = (target) => {
          if (target && typeof target === 'object') {
              return new Proxy(target, readonlyHandler)
          }
          return target
      }
      const readonly = (target) => {
          if (target && typeof target === 'object') {
              for (let k in target) {
                  if (target.hasOwnProperty(k)) {
                      target[k] = shallowReadonly(target[k])
                  }
              }
              return new Proxy(target, readonlyHandler)
          }
          return target
      }
      
      
      // 3. shallowRef 和 ref
      const shallowRef = (target) => {
          return {
              _value: target,
              get value () {
                  console.log('進入數據劫持  get.........')
                  return this._value
              },
              set value (newValue) {
                  console.log('進入數據劫持  set.........', newValue)
                  this._value = newValue
              }
          }
      }
      const ref = (target) => {
          target = reactive(target)
          return {
              _value: target,
              get value () {
                  console.log('進入數據劫持  get.........')
                  return this._value
              },
              set value (newValue) {
                  console.log('進入數據劫持  set.........', newValue)
                  this._value = newValue
              }
          }
      }
      
      // 新增內置組件
      // 1. Fragement
      // 2. Teleport: 包裹的內容插入到 body
      <Teleport to="body"> <div>ssssss</div> </Teleport>
      // 3. Suspense: 異步組價加載中的渲染
      <Suspense>
          <template #default>
              <組件 />
          </template>
          <template v-slot:fallback>
              <Loading />
          </tempalte>
      </Suspense>

       

      posted @ 2022-08-30 17:55  monkey-K  閱讀(42)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av激情综合在线| 风流老熟女一区二区三区| 国产内射XXXXX在线| 亚洲成人www| 国产女同一区二区在线| 亚洲AV日韩精品久久久久| 伊人久久大香线蕉aⅴ色| 中文字幕人妻无码一夲道| 亚洲欧美色综合影院| 《特殊的精油按摩》3| 国产 麻豆 日韩 欧美 久久| 国产精品会所一区二区三区 | 国产精品av中文字幕| 鲜嫩高中生无套进入| 国产成人无码免费看片软件| 国产精品午夜福利视频| 久久av无码精品人妻出轨| 久久亚洲中文无码咪咪爱| 久久综合久中文字幕青草| 无码中文字幕人妻在线一区二区三区| 野花韩国高清电影| 国内精品人妻一区二区三区| 亚洲精品不卡无码福利在线观看| 国产精品成人午夜福利| 亚洲欧美人成人让影院| 亚洲国产中文在线有精品| 极品少妇的粉嫩小泬视频| 国产99精品成人午夜在线| 国产亚洲欧美另类一区二区| 性欧美VIDEOFREE高清大喷水| 亚洲天堂网色图伦理经典| 在线观看中文字幕国产码| 国产区精品视频自产自拍| 国产99在线 | 亚洲| 黄又色又污又爽又高潮| 妓女妓女一区二区三区在线观看| 久久久精品人妻一区二区三区 | 国产高清视频一区二区乱| 亚洲高清免费在线观看| 亚洲av与日韩av在线| 四川丰满少妇无套内谢|