使用styled-components如何对封装好的组件样式进行不同需要的调整

344 阅读1分钟

我在我最新的React项目里封装了一个Layout组件来封装一个包裹页面内容和导航栏的样式。

image.png

并且使用React第三方styled-components库编写样式。

image.png

这里我为了为了使用position:fixed固定底部的Nav组件和某些页面头顶需要的组件,所以规定了Wrapper拥有上下padding。可是有的页面我没有上部需要固定的组件,那么这个padding-top:55px就是多余的,页面顶部将出现空白。使用styled-components库该怎么修改这个封装好的样式呢?


根据styled-components库的文档,我得知有一个Extending Styles的写法。

image.png

可以看到,样式可以扩展,并且修改,添加。

于是我将Layout组件的样式进行封装成为一个LayoutStyle.tsx的文件。

并对样式进行拆分export。

image.png

可以看到我扩展了一个叫LabelWrapper的div标签样式,扩展继承于Wrapper,并且设定padding-top:0

接下来在不需要有上padding的页面,不要引入Layout组件,而是拆开变成

image.png 本应包裹在最外面的标签Wrapper被我替换成了LabelWrapper,这样LabelWrapper不仅包含了Wrapper的所有样式,并且有自己独立的样式。就能达成我想要的效果了。