精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊MobX 上手指南

開發(fā) 前端
之前用 Redux 比較多,一直聽說 Mobx 能讓你體驗到在 React 里面寫 Vue 的感覺,今天打算嘗試下 Mobx 是不是真的有寫 Vue 的感覺。

[[378343]]

之前用 Redux 比較多,一直聽說 Mobx 能讓你體驗到在 React 里面寫 Vue 的感覺,今天打算嘗試下 Mobx 是不是真的有寫 Vue 的感覺。

題外話

在介紹 MobX 的用法之前,先說點題外話,我們可以看一下 MobX 的中文簡介。在 MobX 的中文網(wǎng)站上寫著:

“MobX 是一個經(jīng)過戰(zhàn)火洗禮的庫,它通過透明的函數(shù)響應(yīng)式編程使得狀態(tài)管理變得簡單和可擴展。

數(shù)據(jù)流

“戰(zhàn)火洗禮的庫” 怎么看都感覺很奇怪,讀起來很拗口??,而且網(wǎng)上很多介紹 MobX 的文章都是這么寫的,在 github 翻閱其 README 發(fā)現(xiàn)寫的是:

“MobX is a battle tested library that makes state management simple and scalable by transparently applying functional reactive programming (TFRP).

可以看到作者原本要表達的意思是 MobX 是經(jīng)過了許多的測試,擁有比較強的健壯性。下面是通過谷歌翻譯的結(jié)果,看起來也比中文網(wǎng)的表達要準(zhǔn)確一些。

谷歌翻譯

雖然,我的英文水平也很菜,還是會盡量看官方的文檔,這樣可以避免一些不必要的誤解。

如何使用?

言歸正傳,MobX 現(xiàn)在的最新版是 6.0,這個版本的 API 相比于之前有了極大的簡化,可以說更加好用了。之前的版本是裝飾器風(fēng)格的語法糖,但是裝飾器在現(xiàn)在的 ES 規(guī)范中并不成熟,而且引入裝飾器語法也在增加打包后的代碼體積。綜合考慮后,MobX 6.0 取消了裝飾器語法的 API。

響應(yīng)式對象

MobX 通過 makeObservable 方法來構(gòu)造響應(yīng)式對象,傳入的對象屬性會通過 Proxy 代理,與 Vue 類似,在 6.0 版本之前使用的是 Object.defineProperty API,當(dāng)然 6.0 也提供了降級方案。

  1. import { configure, makeObservable, observable, action, computed } from 'mobx' 
  2.  
  3. // 使用該配置,可以將 Proxy 降級為 Object.defineProperty 
  4. configure({ useProxies: "never" }); 
  5.  
  6. // 構(gòu)造響應(yīng)對象 
  7. const store = makeObservable( 
  8.   // 需要代理的響應(yīng)對象 
  9.   { 
  10.     count: 0, 
  11.     get double() { 
  12.       return this.count * 2 
  13.     }, 
  14.     increment() { 
  15.       this.count += 1 
  16.     }, 
  17.     decrement() { 
  18.       this.count -= 1 
  19.     } 
  20.   }, 
  21.   // 對各個屬性進行包裝,用于標(biāo)記該屬性的作用 
  22.   { 
  23.     count: observable, // 需要跟蹤的響應(yīng)屬性 
  24.     double: computed,  // 計算屬性 
  25.     increment: action, // action 調(diào)用后,會修改響應(yīng)對象 
  26.     decrement: action, // action 調(diào)用后,會修改響應(yīng)對象 
  27.   } 

我們在看看之前版本的 MobX,使用裝飾器的寫法:

  1. class Store { 
  2.   @observable count = 0 
  3.   constructor() { 
  4.     makeObservable(this) 
  5.   } 
  6.   @action increment() { 
  7.     this.count++; 
  8.   } 
  9.   @action decrement() { 
  10.     this.count--; 
  11.   } 
  12.   @computed get double() { 
  13.     return this.count * 2 
  14.   } 
  15.  
  16. const store = new Store() 

這么看起來,好像寫法并沒有得到什么簡化,好像比寫裝飾器還要復(fù)雜點。下面我們看看 6.0 版本一個更強大的 API:makeAutoObservable。

makeAutoObservable 是一個更強大的 makeObservable,可以自動為屬性加上對象的包裝函數(shù),上手成本直線下降。

  1. import { makeAutoObservable } from 'mobx' 
  2.  
  3. const store = makeAutoObservable({ 
  4.   count: 0, 
  5.   get double() { 
  6.     return this.count * 2 
  7.   }, 
  8.   increment() { 
  9.     this.count += 1 
  10.   }, 
  11.   decrement() { 
  12.     this.count -= 1 
  13.   } 
  14. }) 

計算屬性

MobX 的屬性與 Vue 的 computed 一樣,在 makeAutoObservable 中就是一個 getter,getter 依賴的值一旦發(fā)生變化,getter 本身的返回值也會跟隨變化。

  1. import { makeAutoObservable } from 'mobx' 
  2.  
  3. const store = makeAutoObservable({ 
  4.   count: 0, 
  5.   get double() { 
  6.     return this.count * 2 
  7.   } 
  8. }) 

當(dāng) store.count 為 1 時,調(diào)用 store.double 會返回 2。

修改行為

當(dāng)我們需要修改 store 上的響應(yīng)屬性時,我們可以通過直接重新賦值的方式修改,但是這樣會得到 MobX 的警告??。

  1. const store = makeAutoObservable({ 
  2.   count: 0 
  3. }); 
  4.  
  5. document.getElementById("increment").onclick = function () { 
  6.   store.count += 1 

warn

MobX 會提示,在修改響應(yīng)式對象的屬性時,需要通過 action 的方式修改。雖然直接修改也能生效,但是這樣會讓 MobX 狀態(tài)的管理比較混亂,而且將狀態(tài)修改放到 action 中,能夠讓 MobX 在內(nèi)部的事務(wù)流程中進行修改,以免拿到的某個屬性還處于中間態(tài),最后計算的結(jié)果不夠準(zhǔn)確。

makeAutoObservable 中的所有方法都會被處理成 action。

  1. import { makeAutoObservable } from 'mobx' 
  2.  
  3. const store = makeAutoObservable({ 
  4.   count: 0, 
  5.   get double() { 
  6.     return this.count * 2 
  7.   }, 
  8.   increment() { // action 
  9.     this.count += 1 
  10.   }, 
  11.   decrement() { // action 
  12.     this.count -= 1 
  13.   } 
  14. }) 

不同于 Vuex,將狀態(tài)的修改劃分為 mutation 和 action,同步修改放到 mutation 中,異步的操作放到 action 中。在 MobX 中,不管是同步還是異步操作,都可以放到 action 中,只是異步操作在修改屬性時,需要將賦值操作放到 runInAction 中。

  1. import { runInAction, makeAutoObservable } from 'mobx' 
  2.  
  3. const store = makeAutoObservable({ 
  4.   count: 0, 
  5.   async initCount() { 
  6.     // 模擬獲取遠程的數(shù)據(jù) 
  7.     const count = await new Promise((resolve) => { 
  8.       setTimeout(() => { 
  9.         resolve(10) 
  10.       }, 500) 
  11.     }) 
  12.     // 獲取數(shù)據(jù)后,將賦值操作放到 runInAction 中 
  13.     runInAction(() => { 
  14.       this.count = count 
  15.     }) 
  16.   } 
  17. }) 
  18.  
  19. store.initCount() 

如果不調(diào)用 runInAction ,則可以直接調(diào)用本身已經(jīng)存在的 action。

  1. import { runInAction, makeAutoObservable } from 'mobx' 
  2.  
  3. const store = makeAutoObservable({ 
  4.   count: 0, 
  5.   setCount(count) { 
  6.     this.count = count 
  7.   }, 
  8.   async initCount() { 
  9.     // 模擬獲取遠程的數(shù)據(jù) 
  10.     const count = await new Promise((resolve) => { 
  11.       setTimeout(() => { 
  12.         resolve(10) 
  13.       }, 500) 
  14.     }) 
  15.     // 獲取數(shù)據(jù)后,調(diào)用已有的 action 
  16.     this.setCount(count
  17.   } 
  18. }) 
  19.  
  20. store.initCount() 

監(jiān)聽對象變更

無論是在 React 還是在小程序中想要引入 MobX,都需要在對象變更的時候,通知調(diào)用原生的 setState/setData 方法,將狀態(tài)同步到視圖上。

通過 autorun 方法可以實現(xiàn)這個能力,我們可以把 autorun 理解為 React Hooks 中的 useEffect。每當(dāng) store 的響應(yīng)屬性發(fā)生修改時,傳入 autorun 的方法(effect)就會被調(diào)用一次。

  1. import { autorun, makeAutoObservable } from 'mobx' 
  2.  
  3. const store = makeAutoObservable({ 
  4.   count: 0, 
  5.   setCount(count) { 
  6.     this.count = count 
  7.   }, 
  8.   increment() { 
  9.     this.count++ 
  10.   }, 
  11.   decrement() { 
  12.     this.count-- 
  13.   } 
  14. }) 
  15.  
  16. document.getElementById("increment").onclick = function () { 
  17.   store.count++ 
  18.  
  19. const $count = document.getElementById("count"
  20. $count.innerText = `${store.count}` 
  21. autorun(() => { 
  22.   $count.innerText = `${store.count}` 
  23. }) 

每當(dāng) button#increment 按鈕被點擊的時候,span#count 內(nèi)的值就會自動進行同步。??查看完整代碼。

效果演示

除了 autorun ,MobX 還提供了更精細化的監(jiān)聽方法:reaction、 when。

  1. const store = makeAutoObservable({ 
  2.   count: 0, 
  3.   setCount(count) { 
  4.     this.count = count 
  5.   }, 
  6.   increment() { 
  7.     this.count++ 
  8.   }, 
  9.   decrement() { 
  10.     this.count-- 
  11.   } 
  12. }) 
  13.  
  14. // store 發(fā)生修改立即調(diào)用 effect 
  15. autorun(() => { 
  16.   $count.innerText = `${store.count}` 
  17. }); 
  18.  
  19. // 第一個方法的返回值修改后才會調(diào)用后面的 effect 
  20. reaction( 
  21.   // 表示 store.count 修改后才會調(diào)用 
  22.   () => store.count
  23.   // 第一個參數(shù)為當(dāng)前值,第二個參數(shù)為修改前的值 
  24.   // 有點類似與 Vue 中的 watch 
  25.   (value, prevValue) => { 
  26.     console.log('diff', value - prevValue) 
  27.   } 
  28. ); 
  29.  
  30. // 第一個方法的返回值為真,立即調(diào)用后面的 effect 
  31. when(() => store.count > 10, () => { 
  32.   console.log(store.count
  33. }) 
  34. // when 方法還能返回一個 promise 
  35. (async function() { 
  36.   await when(() => store.count > 10) 
  37.   console.log('store.count > 10'
  38. })() 

總結(jié)

MobX 的介紹到這里就結(jié)束了,本文只是大致的列舉了一下 MobX 的 API,希望大家能有所收獲。后續(xù)打算再深入研究下 MobX 的實現(xiàn),等我研究好了,再寫篇文章來分享。

 

責(zé)任編輯:武曉燕 來源: 更了不起的前端
相關(guān)推薦

2014-06-24 09:41:56

Android Stu教程

2024-01-29 00:36:50

Backstage設(shè)施工具

2025-05-28 15:46:13

2013-12-04 14:44:41

Android SDK用戶交互

2013-12-26 15:40:33

Android SDK項目

2013-12-04 13:27:56

Android SDK項目

2014-01-22 10:00:10

Android SDKAndroid開發(fā)

2021-11-26 09:40:37

EclipseIDEA開發(fā)

2016-06-20 10:20:22

Docker云計算

2012-08-01 17:39:17

2014-06-06 14:25:03

iOS 8SwiftWWDC2014

2013-12-26 15:14:38

Android SDK運行調(diào)試

2013-12-04 14:29:18

Android SDK應(yīng)用程序

2013-12-26 15:47:59

Android SDK應(yīng)用程序

2013-11-27 10:12:11

2013-12-26 14:52:52

Android SDK物理設(shè)備

2021-01-19 06:16:05

前端Babel 技術(shù)熱點

2022-09-05 14:45:56

前端K8S

2017-05-17 14:46:22

容器DockerLinux

2020-04-23 09:33:32

Android 協(xié)程開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

免费特级黄色片| 亚洲永久在线观看| 最近中文字幕在线mv视频在线 | 久久精品在线免费观看| 国产精品男人的天堂| 小向美奈子av| 国产精品男女| 在线免费观看成人短视频| 韩国黄色一级大片| 日本黄色三级视频| 琪琪一区二区三区| 欧美激情极品视频| 精品熟妇无码av免费久久| 91国内精品白嫩初高生| 色综合久久久久综合体桃花网| 91在线视频免费观看| 中文字幕高清不卡| 成人性生交大片免费看视频直播| 国产精品日日夜夜| 亚洲国产精品嫩草影院久久av| 欧美日韩国产美| 久久精品2019中文字幕| 中文字幕一二三区| 亚洲www.| 亚洲国产va精品久久久不卡综合| 性欧美videosex高清少妇| www.日韩在线观看| 奇米色一区二区三区四区| 欧美极品欧美精品欧美视频 | 国产精品久久久久久人| 在线精品国产| 在线观看久久久久久| 久久人妻一区二区| 国产视频一区二区在线播放| 色噜噜久久综合| 免费一级特黄毛片| 成人福利片网站| 国产欧美一区二区在线观看| 精品无人乱码一区二区三区的优势| 一级黄色片在线观看| 久久人人97超碰国产公开结果| 高清欧美性猛交xxxx| a级黄色免费视频| 久久精品国产成人av| 国产富婆一级全黄大片| 日韩av一二三| 日韩av高清不卡| 成人精品在线看| 国内在线观看一区二区三区| 欧美成年人视频网站| 美女三级黄色片| 久久中文亚洲字幕| 一区二区三区精品99久久| 免费看污黄网站在线观看| 加勒比色老久久爱综合网| 日韩欧美一级精品久久| av在线免费观看不卡| 欧美一级做a| 欧美日韩国产经典色站一区二区三区 | 国产国产精品人在线视| 成熟妇人a片免费看网站| 中文字幕日韩亚洲| 欧美精品久久99久久在免费线 | 国产在线视视频有精品| 国产一区二区色| 夜夜骚av一区二区三区| 精品一二三四在线| 91精品国产综合久久香蕉922| 亚洲熟女乱色一区二区三区久久久| 美国毛片一区二区| 国产精品视频自在线| 一级黄色免费片| 国产河南妇女毛片精品久久久| 亚洲综合中文字幕在线| 亚洲精品久久久久avwww潮水| 成人久久视频在线观看| 精品欧美日韩在线| 你懂的免费在线观看| 久久亚洲二区三区| 性欧美大战久久久久久久免费观看| 午夜视频在线看| 亚洲乱码国产乱码精品精可以看 | 国产乱码精品一区二区三区不卡| 亚洲 欧美 激情 另类| 久久久久久久久一| 亚洲精品在线免费| 色婷婷av在线| 欧美午夜精品久久久久久浪潮| 爆乳熟妇一区二区三区霸乳| 色综合视频一区二区三区日韩 | 国产精品极品美女在线观看免费 | 激情欧美日韩一区二区| 超碰国产精品久久国产精品99| 性感美女福利视频| 中文字幕一区二区5566日韩| 欧美国产综合在线| 波多野结衣亚洲| 在线播放中文字幕一区| www.欧美com| 欧美猛男做受videos| 久久精品国产成人精品| 五月天婷婷综合网| 免费高清在线一区| 国产精品综合久久久久久| 北岛玲一区二区三区| 洋洋成人永久网站入口| 人妻无码视频一区二区三区| 欧美1区2区3| 国产午夜精品一区理论片飘花| 欧美日韩大片在线观看| 日韩制服丝袜先锋影音| 国产69精品久久久久9999apgf| 国产在线一二三| 亚洲一线二线三线久久久| 91蝌蚪视频在线观看| 国产精品久久久网站| 在线视频日本亚洲性| 日韩欧美中文字幕一区二区| 精品午夜一区二区三区在线观看| 久久国产精品99久久久久久丝袜| 国产在线高清理伦片a| 色婷婷av一区二区三区软件| 白丝校花扒腿让我c| 欧美xxav| 日韩美女在线播放| 理论片中文字幕| 亚洲欧美韩国综合色| 免费黄色一级网站| 亚洲+变态+欧美+另类+精品| 欧美激情一区二区三级高清视频| 在线免费看av片| 久久久精品国产99久久精品芒果 | 91麻豆精品国产| 亚洲精品国产一区黑色丝袜| 在线欧美福利| www.久久草| 成人在线播放免费观看| 欧美日韩一区久久| 粉嫩精品久久99综合一区| 亚洲免费影视| 女女同性女同一区二区三区91| 成人在线高清免费| 欧美成人video| 国产传媒免费在线观看| 老司机免费视频一区二区三区| 欧美专区一二三| 中文在线а√天堂| 亚洲第一精品电影| 日本亚洲欧美在线| 成人精品视频一区二区三区| 福利视频免费在线观看| 一区二区三区视频免费视频观看网站 | 午夜精品久久久久99热蜜桃导演| 成人网址在线观看| 欧美一区二区三区| 欧美日本韩国一区| 国产福利在线导航| 精品影视av免费| 欧美 另类 交| 一区二区在线视频观看| 国产最新精品视频| 日韩中文字幕免费在线观看| 婷婷久久综合九色综合绿巨人| 香港三级日本三级| 免费日韩av片| 一本色道久久综合亚洲精品婷婷 | 亚洲性图自拍| 亚洲精品一区二区三区四区高清| 国产精品自拍视频一区| 99久久精品99国产精品| 国产精品va无码一区二区| 美女亚洲一区| 国产女人18毛片水18精品| 麻豆视频在线播放| 欧美va亚洲va香蕉在线| 久久久午夜影院| 国产日本欧洲亚洲| 亚洲欧洲日本精品| 欧美aⅴ99久久黑人专区| 国产精品yjizz| 欧洲一级精品| 欧美成人激情视频| 性猛交xxxx| 在线不卡免费欧美| 国产一级淫片免费| 国产色产综合产在线视频| www.cao超碰| 亚洲每日在线| 亚洲一区二区三区乱码| av不卡一区二区| 国产精品第2页| 羞羞污视频在线观看| 亚洲精品视频久久| 国产免费无遮挡| 欧美性高潮在线| 无码黑人精品一区二区| 99久久久久久99| 国产精品久久久毛片| 欧美在线亚洲综合一区| 欧美aaaaa喷水| 免费观看亚洲天堂| 日韩av免费在线观看| 午夜成年人在线免费视频| 亚洲无av在线中文字幕| 成人午夜精品福利免费| 欧美伊人久久久久久久久影院 | 精品不卡视频| 亚洲电影一二三区| 免费成人三级| 亚洲一区二区三区视频播放| 久久91导航| 久久久亚洲欧洲日产国码aⅴ| www黄在线观看| 精品调教chinesegay| 精品人妻伦一区二区三区久久| 一本大道久久a久久精二百| 久艹视频在线观看| 国产精品久线观看视频| 麻豆精品免费视频| 成人的网站免费观看| 一级黄色在线播放| 可以免费看不卡的av网站| 青草视频在线观看视频| 伊人久久大香线蕉精品组织观看| 日韩av一区二区三区美女毛片| 国产成人一二片| 亚洲wwwav| 亚洲热av色在线播放| 国产精品日日做人人爱| 超级碰碰久久| 欧美亚洲在线视频| 久久久123| 欧美剧在线观看| 国产在线观看免费麻豆| 色婷婷**av毛片一区| 97视频精彩视频在线观看| 亚洲欧美一区二区三区久久 | 国产色综合天天综合网| 日韩免费va| 日本午夜在线亚洲.国产| 成人影院在线视频| 久久久久久国产| 搞黄网站在线看| 欧美激情视频给我| 欧美24videosex性欧美| 欧美韩国理论所午夜片917电影| 成a人片在线观看| 久久国产精品视频| 成人video亚洲精品| 欧美日产国产成人免费图片| 污污在线观看| 久久久人成影片一区二区三区| 国产精品69xx| 91精品国产高清久久久久久久久 | 国产精品久久久久久久久久久久| 男人最爱成人网| 国产成人精品视频在线| 香蕉成人影院| 成人激情在线观看| 日韩第一区第二区| 成人在线观看91| 日本亚洲不卡| 色噜噜狠狠一区二区三区| 日韩精品dvd| 2021狠狠干| 激情成人综合| aⅴ在线免费观看| 青青草97国产精品免费观看 | 91久久国语露脸精品国产高跟| 欧美理论片在线| 国内毛片毛片毛片毛片| 精品福利一区二区三区| 日本电影一区二区在线观看| 国产亚洲一级高清| 国产激情在线| 午夜精品久久久久久99热| 欧洲亚洲两性| 91在线色戒在线| 婷婷激情一区| 成人看片人aa| 噜噜噜天天躁狠狠躁夜夜精品| 乱色588欧美| 99精品在线免费在线观看| 久久久无码中文字幕久...| 99亚洲一区二区| 天堂av在线网站| 国产成人在线电影| 中文字幕高清视频| 亚洲免费av网站| 日本中文字幕久久| 欧美一区午夜精品| 婷婷丁香花五月天| www.xxxx精品| 日本蜜桃在线观看视频| 国产主播欧美精品| 露出调教综合另类| 中文字幕一区二区三区5566| 一区二区三区国产在线| 色婷婷一区二区三区在线观看| 99re成人在线| 欧美国产日韩在线观看成人| 色综合久久综合| 蜜桃视频在线观看www| 中文字幕成人精品久久不卡| 电影在线观看一区| 亚洲淫片在线视频| 成人高清av| 熟女少妇在线视频播放| 极品销魂美女一区二区三区| 精品人妻少妇嫩草av无码| 一区二区三区四区不卡在线| 久久久久久av无码免费看大片| 亚洲国产欧美一区二区丝袜黑人| 美女av在线播放| 国产精品第2页| 校花撩起jk露出白色内裤国产精品| 黄黄视频在线观看| 麻豆国产欧美日韩综合精品二区| 日本黄色特级片| 亚洲国产日韩在线一区模特| 国产精品伦理一区| 一区二区三区日韩在线| 忘忧草在线日韩www影院| 国产精品亚洲不卡a| 综合五月婷婷| 国产一级免费大片| 中文一区在线播放| 成年人视频免费| 亚洲开心激情网| av资源中文在线| 国产精品久久久久久久久久久久午夜片 | 国产特级黄色片| 色一情一乱一区二区| 成人午夜精品| 日韩av电影在线观看| 老色鬼久久亚洲一区二区| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 欧美午夜精品久久久| 久草视频视频在线播放| 26uuu另类亚洲欧美日本老年| 91久久偷偷做嫩草影院电| 国产女人18毛片| 国产精品乡下勾搭老头1| 国产精品成人69xxx免费视频| 欧美日韩另类一区| 亚洲麻豆精品| 成人网在线观看| 欧美aⅴ99久久黑人专区| 老熟女高潮一区二区三区| 91免费看视频| 伊人手机在线视频| 亚洲精品综合久久中文字幕| 亚洲私拍视频| 欧美动漫一区二区| 久久综合九色| 亚欧精品视频一区二区三区| 欧美日本在线一区| 国产网站在线免费观看| 99中文字幕| 一本色道久久综合亚洲精品不| 欧美 变态 另类 人妖| 欧美性xxxx18| 91caoporn在线| 91精品在线播放| 在线观看日韩av电影| 超碰97人人干| 欧美女孩性生活视频| 成人在线播放| 国产主播一区二区三区四区| 麻豆精品网站| 貂蝉被到爽流白浆在线观看| 欧美一区二区在线不卡| av成人 com a| 日韩福利在线| 国产精品影音先锋| 国产免费av一区二区| 在线播放国产精品| 久久的色偷偷| 北条麻妃69av| 国产精品久久久久婷婷二区次| 国产99视频在线| 日本成人激情视频| 国产精品久久久久久麻豆一区软件 | 亚洲v欧美v另类v综合v日韩v| 精品综合久久久久久8888| 久久97人妻无码一区二区三区| 亚洲美女精品成人在线视频| 色成人综合网| 免费成人在线视频网站| 国产精品久久久久久久浪潮网站| 亚洲mv大片欧洲mv大片精品| 麻豆视频在线免费看| 精品电影一区二区| 成人看片在线观看| 精品无码av无码免费专区| 国产亚洲一区字幕| 亚洲av无码乱码国产精品| 国产精品69av| 精品二区久久| 三级黄色片在线观看|