成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從HarmonyOS SDK根本上解決TextInput(輸入框)不識別飄紅的問題

開發 前端 OpenHarmony
該組件就是TextInput,但是大家在使用它的時候都會發現一個問題,就是IDE會飄紅,但是能夠編譯通過并且可以在模擬器上正常運行。

[[440152]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

背景

在HarmonyOS中使用ets開發的時候,大家會發現沒有輸入框組件,并且目前官網的api介紹上也沒有加入該組件,實際上該組件在本地的sdk目錄下是存在的,同時大家也可以在官方的codelab上找到該組件的使用,還有我發現之前有有人已經關于如何加入輸入框組件寫了篇博客,我就不過多介紹了。該組件就是TextInput,但是大家在使用它的時候都會發現一個問題,就是IDE會飄紅,但是能夠編譯通過并且可以在模擬器上正常運行,如下圖:

從HarmonyOS sdk根本上解決TextInput(輸入框)不識別飄紅的問題-鴻蒙HarmonyOS技術社區

那這個是為什么呢?如何能徹底解決該問題呢?

其實我之前寫過一篇博客解決的問題跟這個類似,請見“[https://harmonyos.51cto.com/posts/9536](如何解決HarmonyOS sdk的bug–AlphabetIndexer組件的bug解決思路)”

要徹底解決這個問題,需要弄明白sdk目錄和DevEco Studio之間的關系。

解決思路

DevEco Studio中代碼為何會飄紅?

根本原因是我們引用的組件在Sdk中不存在,就相比于我們在java中引入一個class,而該class根本就不在jdk中.因此我們需要分析sdk中組件對應是存在哪里?以及sdk中的組件是如何跟DevEco Studio關聯上的?

Sdk目錄結構分析

這里我只對跟該問題緊密相關的目錄進行分析,首先我們可以在sdk下找到一個ets目錄,如下圖:

從HarmonyOS sdk根本上解決TextInput(輸入框)不識別飄紅的問題-鴻蒙HarmonyOS技術社區

**api目錄:**里面存放了我們要調用的api接口的相關ts文件。比如網絡請求、撥打電話等api。該目錄與本問題無關。

**build-tools目錄:**ets項目編譯構建核心目錄,如果編譯無法通過,需要修改該目錄下的文件,在我之前的一篇博客中就修改了該目錄下的文件,請見“[https://harmonyos.51cto.com/posts/9536](如何解決HarmonyOS sdk的bug–AlphabetIndexer組件的bug解決思路)”。

**component目錄:**系統sdk自帶組件存放目錄,解決本問題的核心目錄。

下面對component目錄展開分析,打開該目錄,可以看到各種UI組件對應的ts文件,但是在其中我們并沒有發現TextInput組件對應的ts文件。發現了這點,就會對解決該問題有點頭緒了。

既然飄紅,找不到該組件,那么為何又會編譯通過正常運行呢?

那么要對studio如何編譯構建它有一定了解。

編譯的時候首先會通過讀取ets\3.0.0.0\build-tools\ets-loader下面的一個component_config.json文件,在這個里面對各個組件進行配置關聯。然后會引用ets\3.0.0.0\build-tools\ets-loader\declarations目錄下的相關組件對應的ts文件,該目錄下也存在各類組件對應的ts文件,注意在編譯的時候根本就不會引用之前的component目錄下的組件,編譯跟component目錄沒有關系。而我們會發現ets\3.0.0.0\build-tools\ets-loader\declarations目錄下存在textinput.d.ts文件及TextInput組件。

并且component_config.json文件中也配置了TextInput組件,因此可以通過編譯。

至于能正常運行,那是因為模擬器中安裝的操作系統下有該組件的運行環境。

最后解決飄紅的問題

首先我們要想辦法找一個TextInput組件對應存在的textinput.d.ts文件copy到component目錄下。

注意:這個時候不要復制ets\3.0.0.0\build-tools\ets-loader\declarations目錄下的textinput.d.ts文件,因為它和component目錄下組件的代碼還是有些區別的。

好在我們可以在OpenHarmony Sdk目錄下的component目錄里面找到textinput.d.ts文件,直接copy這個文件過來即可。這個時候大家會認為已經大功告成,實則不然,此時我們會發現Studio中依然飄紅。

后來我反復研究各個目錄下的文件,又發現了一個重要文件,即component目錄下的index.d.ts文件,它相當于一個入口的清單文件,在里面配置了各種系統組件的支持。代碼如下:

  1. /* 
  2.  * Copyright (c) 2021 Huawei Device Co., Ltd. 
  3.  * Licensed under the Apache License, Version 2.0 (the "License"); 
  4.  * you may not use this file except in compliance with the License. 
  5.  * You may obtain a copy of the License at 
  6.  * 
  7.  *     http://www.apache.org/licenses/LICENSE-2.0 
  8.  * 
  9.  * Unless required by applicable law or agreed to in writing, software 
  10.  * distributed under the License is distributed on an "AS IS" BASIS, 
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  12.  * See the License for the specific language governing permissions and 
  13.  * limitations under the License. 
  14.  */ 
  15.  
  16. export * from './alert_dialog'
  17. export * from './alphabet_indexer'
  18. export * from './animator'
  19. export * from './badge'
  20. export * from './blank'
  21. export * from './button'
  22. export * from './circle'
  23. export * from './column'
  24. export * from './column_split'
  25. export * from './common'
  26. export * from './custom_dialog_controller'
  27. export * from './datapanel'
  28. export * from './divider'
  29. export * from './ellipse'
  30. export * from './flex'
  31. export * from './forEach'
  32. export * from './gesture'
  33. export * from './grid'
  34. export * from './grid_container'
  35. export * from './gridItem'
  36. export * from './hyperlink'
  37. export * from './image'
  38. export * from './image_animator'
  39. export * from './lazyForEach'
  40. export * from './line'
  41. export * from './list'
  42. export * from './listItem'
  43. export * from './navigator'
  44. export * from './navigatorView'
  45. export * from './pageTransition'
  46. export * from './panel'
  47. export * from './path'
  48. export * from './polygon'
  49. export * from './polyline'
  50. export * from './progress'
  51. export * from './qrcode'
  52. export * from './rating'
  53. export * from './rect'
  54. export * from './row'
  55. export * from './row_split'
  56. export * from './scroll'
  57. export * from './shape'
  58. export * from './slider'
  59. export * from './span'
  60. export * from './stack'
  61. export * from './stateManagement'
  62. export * from './swiper'
  63. export * from './tab_content'
  64. export * from './tabs'
  65. export * from './text'
  66. export * from './video'

此時我們會發現里面并沒有配置textinput.d.ts文件進來。于是我在該文件中添加下面一條代碼。

  1. export * from './textinput'

 然后就大功告成了,DevEco Studio不飄紅了,并且可以通過Ctrl+鼠標點擊跳轉代碼了。

從HarmonyOS sdk根本上解決TextInput(輸入框)不識別飄紅的問題-鴻蒙HarmonyOS技術社區

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2018-11-05 15:28:05

2010-03-29 21:18:04

無線網絡連接故障

2021-07-13 09:49:08

鴻蒙HarmonyOS應用

2023-08-28 16:51:02

數字化數字化轉型

2021-10-15 10:16:48

電腦重啟電腦硬件

2023-03-20 14:08:00

元宇宙

2020-09-24 14:06:19

Vue

2009-06-30 19:32:16

SUN云計算IT

2021-09-27 14:44:48

鴻蒙HarmonyOS應用

2012-10-22 16:34:37

JavaJava8Lambda

2023-04-27 15:39:54

AI模型

2022-02-15 14:58:29

區塊鏈娛樂加密貨幣

2010-07-30 14:56:31

終端管理細枝末節

2011-07-22 15:32:53

iPhone 按鈕 對話框

2017-12-07 15:36:48

數字化大數據數據治理

2019-03-07 14:45:07

聊天工具富文本輸入框前端

2013-04-17 16:18:59

2014-12-31 10:37:09

2020-04-26 10:00:48

大數據文件傳輸

2023-11-30 15:17:21

人工智能業務流程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲伊人精品酒店 | 欧美videosex性极品hd | 国产午夜三级一区二区三 | 欧美精品一区久久 | 91精品国产91久久久久久吃药 | 91久色 | 久久久av| 亚洲午夜精品一区二区三区 | 欧美高清一区 | 日批日韩在线观看 | 亚洲国产高清高潮精品美女 | 亚洲免费网 | 五月激情综合 | 2020天天操| 孕妇一级毛片 | 国产成人精品久久 | 在线免费观看黄色 | 欧美亚洲另类丝袜综合网动图 | 99亚洲精品| 涩涩视频在线看 | 蜜桃官网| 男人av网 | 免费看色 | 国产精品久久久久久久久久久久久 | 欧美一区二区三区久久精品 | 亚洲国产成人在线视频 | 亚州激情| 欧美aⅴ片 | 亚洲精品一区在线观看 | www.中文字幕.com | 精品久久av | 中文字幕第九页 | 91在线第一页 | 精品国产精品国产偷麻豆 | av播播| 久久综合九色综合欧美狠狠 | 欧美成人免费电影 | 男女啪啪高潮无遮挡免费动态 | 少妇黄色 | 99久久精品免费看国产四区 | 综合九九 |