如果想传递样式给引用的自定义组件,以下写法(直接传递 className)不可行:
/* CustomComp.js */export default class CustomComp extends Component {static defaultProps = {className: ''}render () {return <View className={this.props.className}>这段文本的颜色不会由组件外的 class 决定</View>}}
/* MyPage.js */export default class MyPage extends Component {render () {return <CustomComp className="red-text" />}}
/* MyPage.scss */.red-text {color: red;}
取而代之的,需要利用 externalClasses 定义段定义若干个外部样式类。这个特性从小程序基础库版本 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)。否则无效。
