如果想传递样式给引用的自定义组件,以下写法(直接传递 className不可行

    1. /* CustomComp.js */
    2. export default class CustomComp extends Component {
    3. static defaultProps = {
    4. className: ''
    5. }
    6. render () {
    7. return <View className={this.props.className}>这段文本的颜色不会由组件外的 class 决定</View>
    8. }
    9. }
    1. /* MyPage.js */
    2. export default class MyPage extends Component {
    3. render () {
    4. return <CustomComp className="red-text" />
    5. }
    6. }
    1. /* MyPage.scss */
    2. .red-text {
    3. color: red;
    4. }

    取而代之的,需要利用 externalClasses 定义段定义若干个外部样式类。这个特性从小程序基础库版本 1.9.90 开始支持。

    1. /* CustomComp.js */
    2. export default class CustomComp extends Component {
    3. static externalClasses = ['my-class']
    4. render () {
    5. return <View className="my-class">这段文本的颜色由组件外的 class 决定</View>
    6. }
    7. }
    1. /* MyPage.js */
    2. export default class MyPage extends Component {
    3. render () {
    4. return <CustomComp my-class="red-text" />
    5. }
    6. }
    1. /* MyPage.scss */
    2. .red-text {
    3. color: red;
    4. }

    注意:externalClasses 需要使用 短横线命名法 (kebab-case),而不是 React 惯用的 驼峰命名法 (camelCase)。否则无效。