我在React web上使用Styled-components已经有一段时间了,但最近我开始开发一个React Native应用程序,我决定在其中使用styled-components。在样式化只有style属性的组件时,比如默认的react-native组件,它是非常棒的。
但是,我遇到的问题是,当我需要对具有多个样式属性(如containerStyle、inputStyle等)的更复杂的组件设置样式时。
当它只有一个具有不同名称的样式属性时,我可以执行以下操作:
const StyledBadge = styled(({ style, ...rest }) => {
return <Badge {...rest} containerStyle={style} />;
})`
position: absolute;
right: 0;
top: 0;
`;这可以完美地工作,但是当组件有多种样式时,我不知道该怎么做:
const StyledList = styled(({ style, ...rest }) => {
return <List {...rest} containerStyle={style} searchInputStyle={?} searchItemStyle={?} />;
})`
`;使用Gifted-React-Native-Chat这样的组件更糟糕,因为它具有将属性作为对象传递给内部组件的属性,如messageProps、listViewProps、containerProps,并且所有这些组件都具有style属性。
有没有人知道如何做到这一点,或者这是否可能?
几天来,我一直在寻找并试图找到解决这个问题的方法,但我无法做到。
谢谢!
发布于 2020-05-23 11:25:48
这是我们最终是如何做到这一点的。
Styled-组件只能与style属性一起使用,但许多自定义组件不会公开此属性。相反,它们提供了一个传递给子组件样式属性的*Style属性。
举个例子,react-native-material-textfield有5个风格道具。

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

这不允许你对伪组件使用传统的css语法,但这是我们能想到的最好的方法来组织所有的样式。
https://stackoverflow.com/questions/54804907
复制相似问题