W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
自定義組件對(duì)應(yīng)的樣式文件,只對(duì)該組件內(nèi)的節(jié)點(diǎn)生效。編寫組件樣式時(shí),需要注意以下幾點(diǎn):
#a { } /* 在組件中不能使用 */
[a] { } /* 在組件中不能使用 */
button { } /* 在組件中不能使用 */
.a > .b { } /* 除非 .a 是 view 組件節(jié)點(diǎn),否則不一定會(huì)生效 */
除此以外,組件可以指定它所在節(jié)點(diǎn)的默認(rèn)樣式,使用 :host 選擇器(需要包含基礎(chǔ)庫 1.7.2 或更高版本的開發(fā)者工具支持)。
/* 該自定義組件的默認(rèn)樣式 */
:host {
color: yellow;
}
如果想傳遞樣式給引用的自定義組件,以下寫法(直接傳遞 className)不可行:
/* CustomComp.js */
export default class CustomComp extends Component {
static defaultProps = {
className: ''
}
render () {
return <View className={this.props.className}>這段文本的顏色不會(huì)由組件外的 class 決定</View>
}
}
/* MyPage.js */
export default class MyPage extends Component {
render () {
return <CustomComp className="red-text" />
}
}
/* MyPage.scss */
.red-text {
color: red;
}
取而代之的,需要利用 externalClasses 定義段定義若干個(gè)外部樣式類。這個(gè)特性從小程序基礎(chǔ)庫版本 1.9.90 開始支持。
/* CustomComp.js */
export default class CustomComp extends Component {
static externalClasses = ['my-class']
render () {
return <View className="my-class">這段文本的顏色由組件外的 class 決定</View>
}
}
/* MyPage.js */
export default class MyPage extends Component {
render () {
return <CustomComp my-class="red-text" />
}
}
/* MyPage.scss */
.red-text {
color: red;
}
注意:externalClasses 需要使用 短橫線命名法 (kebab-case),而不是 React 慣用的 駝峰命名法 (camelCase)。否則無效。
使用外部樣式類可以讓組件使用指定的組件外樣式類,如果希望組件外樣式類能夠完全影響組件內(nèi)部,可以將組件構(gòu)造器中的 options.addGlobalClass 字段置為 true。這個(gè)特性從小程序基礎(chǔ)庫版本 2.2.3 開始支持。
/* CustomComp.js */
export default class CustomComp extends Component {
static options = {
addGlobalClass: true
}
render () {
return <View className="red-text">這段文本的顏色由組件外的 class 決定</View>
}
}
/* 組件外的樣式定義 */
.red-text {
color: red;
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: