react-native - 在 React Native 上使用 styled-components 设置多个样式 props
问题描述
我已经在 React web 中使用 Styled-components 有一段时间了,但最近我开始开发一个 React Native 应用程序,我决定在其中使用 styled-compoents。当样式化只有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
属性。
有谁知道如何做到这一点,或者是否有可能?
几天来,我一直在寻找并试图找到解决方案,但我做不到。
谢谢!
解决方案
这就是我们最终如何做到的。
Styled-components 仅适用于style
道具,但许多自定义组件不公开此道具。相反,它们提供了一个*Style
传递给子组件样式道具的道具。
例如,react-native-material-textfield有 5 个样式道具。
我们使用该attrs
功能将样式组织与其余样式组件保存在一个文件中。
这不允许您对伪组件使用传统的 css 语法,但这是我们能想到的最好的方法,以保持所有样式井井有条。
推荐阅读
- node.js - Firebase web 9.0.1 错误包路径。未导出
- raspberry-pi - 向 Windows.Devices.GPIO.GpioPin.ValueChanged 添加处理程序会使窗口崩溃
- google-compute-engine - 计算引擎:重新启动后错误连接被拒绝
- javascript - 在 vue.js 更改 Swal2 的字体系列
- python - 比较方法违反了它的总合同!尝试运行决策树模型时
- r - 汇总按字符列分组的多个因子列并将结果作为 R 中的“嵌套”表返回
- gremlin - gremlin 中的 GraphDB 复杂查询帮助
- javascript - cypress javascript函数的打字稿定义
- vba - 为什么我收到 dbSeeChanges 错误
- android - 从 FCM 通知接收开始导航目的地的参数