在JavaScript React中,我会这样做来“合并”几个样式:
const customStyle= {
fontWeight: 'bold'
};
<p
style={[{fontStyle: 'italic'}, customStyle]}>
{Some Text....}
</p>
然而,当我在TypeScript React项目中尝试此操作时,我得到了以下结果:
TS2322: Type '({ fontWeight: string; } | { fontStyle: string; })[]' is not assignable to type 'Properties<string | number, string & {}>'.
Types of property 'filter' are incompatible.
Type '{ <S extends { fontWeight: string; } | { fontStyle: string; }>(predicate: (value: { fontWeight: string; } | { fontStyle: string; }, index: number, array: ({ fontWeight: string; } | { fontStyle: string; })[]) => value is S, thisArg?: any): S[]; (predicate: (value: { ...; } | { ...; }, index: number, array: ({ ...; } ...' is not assignable to type 'Filter | undefined'.
这个数组构造非常方便,因为元素的顺序很重要。使用customStyle
,我可以覆盖之前在对象{fontStyle: 'italic'}
中定义的所有内容...
如何将多个样式传递给HTML元素的style
属性?
3条答案
按热度按时间k97glaaz1#
为什么不使用spread运算符呢?比如:
您的样式也将以这种方式被覆盖
bcs8qyzn2#
你需要将数组缩减为一个对象
bybem2ql3#
react中的style属性可以接收
React.CSSProperties | undefined
,React.CSSProperties
或undefined
类型的对象,但不能接收数组。可以使用缩减器将阵列中的两个对象合并为一个对象,或者使用类型均为
React.CSSProperties
的两个对象的扩散操作符。要“覆盖”一个对象,只需将展开操作符放在后面,所有重复的关键点都将被覆盖。
Sandbox