export enum SizeEnum { Small, Large } export interface ICheckbox { Size: SizeEnum; } const Box = styled.div` height: 20px; width: 20px; `
在上面的代码中,我希望能够根据prop有条件地更改<Box>的高度和宽度值。我该怎么做呢?
<Box>
mlnl4t2r1#
另一种方法,如果你想添加几个css样式。
const Box = styled.div` height:100px; width:100px; ${props => props.Size === 'Small' && css` height:20px; width:20px; `} `
inb24sb22#
有关详细信息,请参见Logical Operators和Adapting based on props。
Logical Operators
Adapting based on props
// Box. const Box = styled.div` height: ${({Size}) => Size === 'Small' && '25px' || Size === 'Large' && '100px' || '50px' }; width: ${({Size}) => Size === 'Small' && '25px' || Size === 'Large' && '100px' || '50px' }; ` // Render. <Box/> // 50px - Normal. <Box Size="Small"/> // 25px - Small. <Box Size="Large"/> // 100px - Large.
noj0wjuj3#
您可以使用三元运算符
const Box = styled.div` height: ${props => props.Size === 'Small' ? '20px' : '40px'} width: ${props => props.Size === 'Small' ? '20px' : '40px'} `
参考:https://www.styled-components.com/docs/basics
snvhrwxg4#
您可以在以下内容中使用 *elvis运算符 *:
${(props) => props.someValue ? css` width: 20px;` : css` width: 100px; `}
希望这对研究如何在 *React样式的组件 * 中使用 * 逻辑运算符 * 的人有所帮助。
rqqzpn5f5#
我们可以像jsx一样添加if检查
jsx
const Box = styled.div` height:100px; width:100px; ${props => props.Size === 'Small' && ` height:20px; width:20px; `} `
注:无需包含单词css
css
f0brbegy6#
你可以在TypeScript中添加接口,并对默认值、小框和大框使用布尔值。这个例子是为那些有两个以上选择的人准备的。如果有两个选择,我会使用箭头函数和? :操作符。
? :
interface Sizes { small?: boolean, large?: boolean } // Box. const Box = styled.div<Sizes>` // p in this case means parameter which can have small and large booleans height: ${p => (p.small && '25px') || (large && '100px') || '50px' }; width: ${({Size}) => (small && '25px') || (large && '100px') || '50px' }; ` // Render. <Box/> // 50px - Normal. <Box small/> // 25px - Small. <Box large/> // 100px - Large.
afdcj2ne7#
也可以使用实际的if/else语法,重要的是返回值应该是字符串:
const DrawerItemTitle = styled.div<{isExpanded: boolean}>(props => { const baseStyles = ` white-space: nowrap; `; const expandedStyles = baseStyles + ` opacity: 1; transition: opacity 0.4s; text-align: center; flex-grow: 1;` const notExpandedStyles = baseStyles + ` opacity: 0; transition: opacity 0s; position: absolute; width: 100%; `; if(props.isExpanded) { return expandedStyles; } else { return notExpandedStyles; } );
7条答案
按热度按时间mlnl4t2r1#
另一种方法,如果你想添加几个css样式。
inb24sb22#
有关详细信息,请参见
Logical Operators
和Adapting based on props
。noj0wjuj3#
您可以使用三元运算符
参考:https://www.styled-components.com/docs/basics
snvhrwxg4#
您可以在以下内容中使用 *elvis运算符 *:
希望这对研究如何在 *React样式的组件 * 中使用 * 逻辑运算符 * 的人有所帮助。
rqqzpn5f5#
我们可以像
jsx
一样添加if检查注:无需包含单词
css
f0brbegy6#
你可以在TypeScript中添加接口,并对默认值、小框和大框使用布尔值。这个例子是为那些有两个以上选择的人准备的。如果有两个选择,我会使用箭头函数和
? :
操作符。afdcj2ne7#
也可以使用实际的if/else语法,重要的是返回值应该是字符串: