1.按照官網步驟進行,css
$ npm install -g create-react-app html
# 注意:工具會自動初始化一個腳手架並安裝 React 項目的各類必要依賴,若是在過程當中出現網絡問題,請嘗試配置代理或使用node
其餘 npm registry。react
$ create-react-app my-app ios
$ cd my-app
git
$ npm install antd-mobile --savees6
入口頁面 (html 或 模板) 相關設置:github
/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>');npm
按需加載#json
引入 react-app-rewired 並修改 package.json 裏的啓動配置:
$ npm install react-app-rewired --save-dev
而後在項目根目錄建立一個 config-overrides.js 用於修改默認配置。
$ npm install babel-plugin-import --save-dev
全部步驟進行以後,恭喜你,踏入react-mobile第一坑,報錯:
The "injectBabelPlugin" helper has been deprecated as of v2.0. You can use customize-cra plugins in replacement - https://github.com/arackaf/customize-cra#available-plugins
解決方法:把react-app-rewired 進行降級後能夠了,即
$ yarn add react-app-rewired@2.0.2-next.0
安裝低版本的react-app-rewired之後,從新npm install
,再運行yarn start
,便可解決問題,實現antd按需引入
2.使用antd-mobile的InputItem須要引入受控組件rc-form
npm install rc-form
可是安裝過程當中報錯,查看官網,更新在9天前,應該是新版本兼容問題
解決辦法: npm install rc-form@2.4.0
3. antd-mobile的Menu添加路由
咱們都知道,點擊Menu的時候,但願連接更改,頁面跳轉
可是點擊Menu的時候,沒法使用
之因此沒法使用,是由於這個導航組件不是經過路由跳轉過來的,他的父級纔是路由跳轉過來的
這時候,咱們須要用到withRouter
將withRouter 引入
再將組建用withRouter封存
就可使用啦,具體用法直接百度
4.封裝單選組建
關於初衷爲何要封裝,是由於封裝以後能夠屢次使用,而來不會擠在一個頁面上,這樣看起來很嘈雜,結構不夠清晰
我封裝的是不受控的組建,更改選擇以後的值直接取自組建的state中,可是在表單中使用,卻取不到這個自定義組件的值了
查詢了官網以後,請看自定義表單控件https://ant.design/components/form-cn/#components-form-demo-customized-form-controls
使用到兩個onchange以後的函數
即點擊肯定後,將值渲染到頁面,而後再將值傳出,以後咱們在用rc-form的getFieldProps方法輕鬆加愉快了
可是我遇到的是Picker組件總是報錯,說是裏面的選項未找到···
排查了一下,發現optionData即單選的選項有時候會是undefined,這是爲啥
原來我是先將總的數據傳到單選組件,而後再在組件中循環遍歷,加入label標籤,這樣的作法是不對的
應該如今頂層遍歷數據,加好label,而後再加判斷 optionData有值的時候再傳入這個組件,這樣就不會找不到選項數據了
5, antd-mobile的級聯組件一點都很差用額,不知足公司需求
需求是這樣的,點擊修改,彈出省的選擇,選擇省以後,再根據選擇的省級,加載市的數據,再根據市的選擇加載區的數據
而不是一古腦兒的把數據傳給你,這樣數據會很龐大,(即便不龐大,公司給的接口是這樣,我也沒有辦法,gucci~~)
既然如此,只能本身寫了,雖然寫的很爛,可是能用就行了
這裏用到了 antd-mobile的Tag和Radio
作好的效果如圖
效果仍是能夠的,哈哈哈,選完以後,點擊前面的tag,彈出相應的可修改,後面的置灰不可點擊
具體代碼請看https://github.com/copperfield013/react_datamobile/blob/master/src/components/CasePicker/index.js
6.多選框或是抽屜,或是Menu的穿透問題 (兼容安卓和IOS)
做爲移動端,爲了用戶體驗,確定會用到相似的一些彈出框,antd的組件雖然幫咱們處理了一些,可是我發現ios上仍是有穿透問題,即彈出內容後,背後的頁面仍是會隨着指尖滑動而滑動,這是怎麼肥四??
其實很簡單,先定義一個阻止默認行爲的函數:
任何在多選框或是抽屜彈出時:
當關閉內容時,再將設置恢復如初就ok了:
7.標題置頂Bug,這個不是antd-mobile的bug,可是也記錄下
收到的需求是這樣的,向上滑動,滑到某一塊,某一塊的標題置頂
這麼簡單的小小功能用fixed作不就完了嘛,有什麼難度
可是當我完成效果的時候,發現有一個小bug,當標題置頂切換的時候,出現了閃動,這是怎麼回事??
原來設置了fixed的元素脫離了文檔流,使得獲取判斷的offsetTop的值不斷的發生變化,進而會出現閃動
解決方法,fixed既然脫離了文檔流,不就是少了一塊嘛,手動加上即是
在每一模塊下面添加一個高度與標題同樣的空的div,設置display爲none,
當滾動到特定高度時,標題置頂脫離文檔流的同時,設置該模塊下的空div的display:block,這就完事兒啦!!!