微信小程序自定義組件的注意點

我們在往常用vue或者是react編程的時候,最常用最常見的一個詞就是組件距潘,在小程序開發(fā)中蜓氨,組件也是很nice的,畢竟誰也不想把1+1 = 2每一個頁面寫一遍突倍。本篇文章適合知道小程序基本開發(fā)的手足腔稀,總結一些自己在開發(fā)小程序組件的過程需要注意的點盆昙,有寫的不對的地方還請指指教。



1. 基本配置

新建組件就跟新建頁面一樣焊虏,還是js淡喜、json、wxml诵闭、wxss四個文件炼团,這里需要注意的有四點。

一疏尿、或許很多人在新建組件的時候瘟芝,會右鍵直接新建page,這樣就會在app.json的配置文件中的pages下面褥琐,根據(jù)路徑多加一項锌俱,需要注意的是,這一項不像是頁面敌呈,刪掉也沒關系贸宏。

二、新建組件之后
? ? ? ?需要在組件的配置文件json中添加component: true字段磕洪;
? ? ? ?需要在引用組件的配置文件中添加usingComponents字段來定義組件的名字和路徑【可以直接用/+app.json中自動生成的吭练,以免路徑找不到】

三、新建的組件析显,如果是直接一鍵生成的鲫咽,那么這個時候js文件中的還是page({...生命周期等執(zhí)行函數(shù)}),所以這個時候需要我們把這些換成組件需要的component({...組件需要的對象})

2.組件樣式

關于樣式叫榕,就是我們的css了浑侥,至于里面的slot姊舵,無非就是一個插槽晰绎,而模版文件中數(shù)據(jù)綁定等我們都可以按照頁面中的來實現(xiàn),需要注意的是選擇器樣式污染問題

一括丁、選擇器
在編寫組件的時候荞下,不能使用id選擇器(#a)、屬性選擇器([a])和標簽名選擇器史飞,建議統(tǒng)一使用class
子選擇器只能用于view組件尖昏,和其子節(jié)點之間,其余的不建議使用 比如text > text
繼承樣式的話 font還有color這種樣式繼承构资,會從組件外繼承到組件內(nèi)部
除繼承樣式之外抽诉,app.wxss中的樣式,組件所在頁面的樣式對組件內(nèi)部是無效的

其實呢吐绵,我們只用class選擇器就好了迹淌。河绽。。

二唉窃、外部樣式定義
組件定義好了之后耙饰,在使用的時候,如果我忽然在調(diào)用頁面加一個class控制樣式纹份,想加一個class怎么辦呢苟跪?
在組件內(nèi)部的js文件中配置externalClasses:['xxx'],這樣在外部引用的時候蔓涧,可以直接使用這里定義的件已,畢竟單節(jié)點上面,同一節(jié)點同時使用普通樣式和外部樣式的時候蠢笋,優(yōu)先級會出現(xiàn)錯亂拨齐,所以這能很好的避免這種情況
我們前面說了,自定義組件內(nèi)部樣式昨寞,是不會受到外部樣式的影響的瞻惋,除非是全局的標簽或者是options配置中添加assGlobalClass字段

樣式配置

3.component構造器

其實這里的構造器都是制定組件重的屬性、數(shù)據(jù)援岩、方法等等歼狼,定義的字段可以參考官方文檔,我這里不多做累述享怀,把容易混淆的點拿出來對比一下羽峰。

properties: 組件的對外屬性
data: 組件的內(nèi)部數(shù)據(jù)
組件生命周期:生命周期有優(yōu)先級,一般情況下直接當作普通方法添瓷,但是如果需要優(yōu)先級的時候梅屉,可以寫到lifetimes對象里面

組件生命周期

4.組件事件

組件的事件,我們和vue差不多的寫法鳞贷,會有一個methods統(tǒng)一來管理坯汤。但是我們通常有兩種類型
1. 組件內(nèi)部調(diào)用的方法。
? ? 和普通一樣就好了搀愧,無非就是完全在組件內(nèi)部自己玩惰聂,不和外部頁面進行數(shù)據(jù)通信,請求也是自己完成
2. 和父組件或者頁面有數(shù)據(jù)通信的方法咱筛。
? ? 我們在vue中需要使用到自組件向父組件傳遞消息搓幌,有一種方法就是this.$emit('...', msg)
? ? 但是我們在小程序中也需要這種場景 【監(jiān)聽事件】:組件間通信的主要方式之一
組件內(nèi)部

```

????????<view bindtap="onHandle"></view>

????????methods: {

onHandle() {

.....

this.triggerEvent('eventName', detailMsg)

}

}

```

頁面或者組件調(diào)用該組件的時候調(diào)用定義好的方法
```

<my-component bind:eventName="handleComponent"></my-component>

```

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迅箩,隨后出現(xiàn)的幾起案子溉愁,更是在濱河造成了極大的恐慌,老刑警劉巖饲趋,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拐揭,死亡現(xiàn)場離奇詭異罢缸,居然都是意外死亡,警方通過查閱死者的電腦和手機投队,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門枫疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敷鸦,你說我怎么就攤上這事息楔≈戳” “怎么了谤民?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窥浪。 經(jīng)常有香客問我碟案,道長愿险,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任价说,我火速辦了婚禮辆亏,結果婚禮上,老公的妹妹穿的比我還像新娘鳖目。我一直安慰自己扮叨,他們只是感情好,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布领迈。 她就那樣靜靜地躺著彻磁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狸捅。 梳的紋絲不亂的頭發(fā)上衷蜓,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音尘喝,去河邊找鬼磁浇。 笑死,一個胖子當著我的面吹牛瞧省,可吹牛的內(nèi)容都是我干的扯夭。 我是一名探鬼主播鳍贾,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼鞍匾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骑科?” 一聲冷哼從身側(cè)響起橡淑,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咆爽,沒想到半個月后梁棠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體置森,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年符糊,在試婚紗的時候發(fā)現(xiàn)自己被綠了凫海。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡男娄,死狀恐怖行贪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情模闲,我是刑警寧澤建瘫,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站尸折,受9級特大地震影響啰脚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜实夹,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一橄浓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亮航,春花似錦贮配、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宴猾,卻和暖如春圆存,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仇哆。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工沦辙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讹剔。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓油讯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親延欠。 傳聞我的和親對象是個殘疾皇子陌兑,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361