前端 2020-07-25 08:57:49

使用Taro开发微信小程序时,发现元素的样式并不能像react那样直接从父组件传入到子组件中。

微信小程序开发文档中有说明:

默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响

所以我们需要借助微信小程序提供的能力去传入样式,我们可以使用Component中的externalClasses。

这个特性可以用于实现类似于 view 组件的 hover-class 属性:页面可以提供一个样式类,赋予 view 的 hover-class ,这个样式类本身写在页面中而非 view 组件的实现中。

注意:在同一个节点上使用普通样式类和外部样式类时,两个类的优先级是未定义的,因此最好避免这种情况。

示例

子组件:

定义my-class为外部样式类

static externalClasses =  ['my-class']


<View className='bg-progress my-class'>

父组件

传入对应的样式类给my-class属性

<Parent 
    my-class={ "progress-bar" }
></Parent>

参考资料:

  1. https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html