【发布时间】:2019-12-07 15:41:59
【问题描述】:
我有以下函数,它使用作为道具传递的自定义值覆盖我的组件基本样式:
function overrideCardContainerStyles (props) {
const {
width,
height,
borderRadius,
backgroundColor,
paddingVertical,
paddingHorizontal,
} = styles.cardContainer;
const {
cardWidth,
cardHeight,
cardBorderRadius,
cardBackgroundColor,
cardPaddingVertical,
cardPaddingHorizontal,
} = props;
return {
width: cardWidth || width,
height: cardHeight || height,
borderRadius: cardBorderRadius || borderRadius,
backgroundColor: cardBackgroundColor || backgroundColor,
paddingVertical: cardPaddingVertical || paddingVertical,
paddingHorizontal: cardPaddingHorizontal || paddingHorizontal,
};
};
虽然此策略有效并且适用于覆盖一些样式,但随着项目的发展,它不会有效。我设想项目中几乎所有定义的基本样式都可以选择用道具覆盖。
有没有更好的方法在更优雅和可扩展的庄园中实现这一目标?
【问题讨论】:
-
为什么不使用
styles属性并将其合并到样式变量中? -
感谢您的回答,因为这为我指明了正确的方向。我使用了扩展扩展运算符并合并了两个对象。最后一块拼图是这篇文章:davidwalsh.name/merge-objects
标签: reactjs react-native components theming