首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用React Native上的styled-components设置多种样式道具的样式

使用React Native上的styled-components设置多种样式道具的样式
EN

Stack Overflow用户
提问于 2019-02-21 18:31:30
回答 1查看 1.2K关注 0票数 3

我在React web上使用Styled-components已经有一段时间了,但最近我开始开发一个React Native应用程序,我决定在其中使用styled-components。在样式化只有style属性的组件时,比如默认的react-native组件,它是非常棒的。

但是,我遇到的问题是,当我需要对具有多个样式属性(如containerStyleinputStyle等)的更复杂的组件设置样式时。

当它只有一个具有不同名称的样式属性时,我可以执行以下操作:

代码语言:javascript
运行
复制
const StyledBadge = styled(({ style, ...rest }) => {
  return <Badge {...rest} containerStyle={style} />;
})`
  position: absolute;
  right: 0;
  top: 0;
`;

这可以完美地工作,但是当组件有多种样式时,我不知道该怎么做:

代码语言:javascript
运行
复制
const StyledList = styled(({ style, ...rest }) => {
  return <List {...rest} containerStyle={style} searchInputStyle={?} searchItemStyle={?} />;
})`
`;

使用Gifted-React-Native-Chat这样的组件更糟糕,因为它具有将属性作为对象传递给内部组件的属性,如messagePropslistViewPropscontainerProps,并且所有这些组件都具有style属性。

有没有人知道如何做到这一点,或者这是否可能?

几天来,我一直在寻找并试图找到解决这个问题的方法,但我无法做到。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-05-23 11:25:48

这是我们最终是如何做到这一点的。

Styled-组件只能与style属性一起使用,但许多自定义组件不会公开此属性。相反,它们提供了一个传递给子组件样式属性的*Style属性。

举个例子,react-native-material-textfield有5个风格道具。

我们使用attrs函数将样式的组织与其他带样式的组件保存在一个文件中。

这不允许你对伪组件使用传统的css语法,但这是我们能想到的最好的方法来组织所有的样式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54804907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档