<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [toc] 在 “我的” 頁面中可以打開抽屜導航。 # 蓋住APP 為了讓抽屜導航能夠把整個 APP(包含底部導航)都蓋上,那么這個抽屜導航的代碼,需要寫在最外層組件中: ![](https://img.kancloud.cn/68/04/6804f1a1678ec79571dfce3404508d69_2656x1488.png) # 整個 APP 整體向左滑動 為了讓整個 APP 整體向左滑動,所以代碼需要寫在 “最外層” 組件中,控制整個 APP。 ![](https://img.kancloud.cn/56/84/5684c532e7b2cb57dea7a944f74e46ba_2652x1460.png) 說明:向左移動可以使用 left 也可以使用 transform 實現,因為這個功能需要做成一個動畫,而 transform 可以使用原生驅動動畫,所以性能更好,所以這里選擇使用 transform。 ![](https://img.kancloud.cn/56/61/56615af3315207bfd9999c2a49c0cd92_1872x1488.png) # 擴展知識點:布局時的層級 在 RN 中默認寫在后面的組件會蓋在前面的組件上,所以調整一個組件的層級: 1. 把高層級組件寫在后面 2. 通過 `zIndex` 來設置層級 # 透明層 主 APP 上要有一個層蓋上,當點擊這個層時還能滑動 APP 回原位置: ![](https://img.kancloud.cn/8f/5b/8f5b2d934f6c298119cb8315e68a9976_2792x1302.png) # 控制透明層的顯示和隱藏 1. 定義變量 ![](https://img.kancloud.cn/d9/9c/d99c40fe3a4c33eb0711b612b8d638d7_1312x434.png) 2. 通過這個變量判斷組件是否顯示(條件渲染) ![](https://img.kancloud.cn/84/c4/84c415177c53316cb6fbde3e887f40a7_1072x1182.png) 3. 在顯示和隱藏抽屜時修改變量的值 ![](https://img.kancloud.cn/45/6d/456d9d35758ccd72576b87f7f37d3cc5_958x530.png) # 在子組件中控制這個抽屜動畫 難點:抽屜的動畫代碼是寫在最外層的父組件中的,如何在子組件“我的”這個頁面中來調用? 解決辦法:方法很多,其中一個思路是:數據在組件中的傳遞。 我們只要能把動畫的代碼傳遞到子組件中,在子組件中就可以調用了。 組件之間傳遞數據方法: 1. 一層一層的傳,父-》子-》孫-》重孫-》。。。。 (優點:簡單 缺點:層級多時很復雜) 2. 使用 redux(優點:組件間共享數據 缺點:需要安裝并且代碼稍微有些難度) 3. Context:React 中有一個 Context 技術,可以用來父向子孫組件共享數據。 綜合來看使用 Context 來共享數據比較方便。 實際操作: 1. 在父組件中封裝一個函數,用這個函數來執行動畫 ![](https://img.kancloud.cn/f9/4a/f94ad2823eef278629ab70c305350123_1144x652.png) 2. 通過 Context 組件把這個函數共享給所有子組件 ![](https://img.kancloud.cn/32/76/3276b08e4490ec8a1cd408e3ad2404c1_1600x590.png) 3. 在子組件中就可以使用 Context 來得到這個函數并調用 ![](https://img.kancloud.cn/dc/fa/dcfae5d1033f9fbae9d249a48fd1ad0e_1742x548.png) ![](https://img.kancloud.cn/4a/91/4a916fe309e8ef6069893de84f548b23_738x920.png) # 擴展問題:函數寫在組件中和寫在組件外區別? ![](https://img.kancloud.cn/7b/af/7bafaa123ecd4a4175c28756b221cfc7_1368x1006.png) 所以一般需要操作數據,函數都寫在組件中。 有什么辦法能避免在組件中定義的函數在組件更新時重復定義嗎? 答:使用 `useCallback` 來定義函數。 # 知識點總結:使用 Context 為子組件共享數據 1. 創建一個 Context ![](https://img.kancloud.cn/2b/f9/2bf96dca7c62dc2dca69ae61c547640c_1338x532.png) 2. 在父組件中引入并使用 引入 ![](https://img.kancloud.cn/da/d4/dad4f7a496d9cf58927c09ca67b62dd3_1226x764.png) 把子組件套起來 ![](https://img.kancloud.cn/d4/77/d477c9d8977b4228a4bce92526f36a9b_1426x578.png) 3. 在子組件中引入使用 ![](https://img.kancloud.cn/91/ea/91ea406aa116d759b9f043de8b23f494_1458x824.png) # 制作我的抽屜導航 ## 問題一、無法寫在子頁面中 通過測試,發現如果把抽屜按鈕寫在子頁面中無法定位到 整個 APP的右面 ![](https://img.kancloud.cn/fd/8c/fd8c0989bb899e48220b25ff5c5b9d08_1662x1438.png) 所以這個抽屜的按鈕雖然是顯示在我的這個子頁面中的,但代碼還是要寫在最外層的組件中,否則無法定位到整個 APP 的最右邊: ![](https://img.kancloud.cn/0a/fd/0afd5a94dd7456c54fb0ff170db09c97_1824x1370.png) ## 調整抽屜導航的位置 因為整個 APP 向左滑動了 75% ,所以抽屜的寬度和位置也是 75%: ![](https://img.kancloud.cn/4c/4f/4c4fc2177bc38eea9e31ef6a565f2b96_1830x1432.png) ## 把原 Drawer 組件中的按鈕拿過來 我們之前已經寫了一個 Menu 組件,現在只要復制到這個框里即可: 1. 引入 Menu 組件 ![](https://img.kancloud.cn/f0/62/f062f867c568d9dde084d6d65ac23824_1108x568.png) 2. 放到框中 ![](https://img.kancloud.cn/c2/73/c2733c3c0a89d49ef195533bb9c72715_896x458.png) 現在存在一個問題,導航上的按鈕不能點擊。 原因:在屏幕之外的內容不能點擊。 ## 解決不能點擊的問題:將導航按鈕也放到屏幕中 1. 先把導航從主 APP 中拿出來 (目的:讓主 APP 向左滑動時,導航不要隨著滑動) ![](https://img.kancloud.cn/6e/c6/6ec6f1596b89069283fe8fd9bdf60692_1864x1184.png) 2. 把導航先放到外邊去 ![](https://img.kancloud.cn/50/35/5035fb5c2e678d4c68e05d3f0417b1a0_1556x1048.png) 3. 給抽屜導航也添加一個動畫,讓它滾動回屏幕中 這樣就在屏幕中了,就可以點擊了 ![](https://img.kancloud.cn/df/94/df9487c4fb390d189a0cea5df6dd53b7_1666x1488.png) # 通過滑動關閉抽屜導航 現在我們只能通過點擊按鈕來打開和關閉,但實際應該可以通過手勢左右滑動就可以打開關閉抽屜 。 好了,接下來我們實現通過向右滑動來關閉抽屜。 在 RN 中提供了一個 `PanResponder` 組件可以實現左右滑動。 實際流程: 1. 創建一個監聽左右滑動的組件 ![](https://img.kancloud.cn/78/b8/78b897c37955f06ceffa9d5c53f62bc1_1072x356.png) ![](https://img.kancloud.cn/bc/0f/bc0f7933976fbce605dbc7fc1ee9a4d9_1462x872.png) 2. 把監聽滑動的組件綁定到一個元素上 ![](https://img.kancloud.cn/9e/bf/9ebf2ba6772d9654ba03f19b0c0edea2_1000x730.png) # 知識點:PanResponder 組件介紹 ![](https://img.kancloud.cn/a3/45/a3455d212bee69b8189c35c821598525_1948x1260.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看