Javascript 使用样式化组件有条件地呈现组件
使用样式化组件,我可以传入值,然后根据这些值获得条件css。比如说我可以,Javascript 使用样式化组件有条件地呈现组件,javascript,reactjs,styled-components,Javascript,Reactjs,Styled Components,使用样式化组件,我可以传入值,然后根据这些值获得条件css。比如说我可以, const ContainerStyled = styled.div<{isOpen: boolean}>` ${({ isOpen }) => isOpen ? background-color: red : '' } ` 我猜您在问是否可以根据条件更改样式化目标 为此,您需要执行简单的步骤: 习俗 有条件地使用 在下一个示例中,该按钮在呈现样式化.div和样式化(组件)之间
const ContainerStyled = styled.div<{isOpen: boolean}>`
${({ isOpen }) => isOpen
? background-color: red
: ''
}
`
我猜您在问是否可以根据条件更改样式化目标 为此,您需要执行简单的步骤:
样式化.div
和样式化(组件)
之间切换
const Container=styled.div`
宽度:100px;
高度:100px;
背景色:${({isOpen})=>(isOpen?`red`:`blue`)};
`;
常量组件=({className})=>Hello;
常量应用=()=>{
常量[isOpen,toggle]=useReducer(p=>!p,false);
返回(
切换
);
};
您可以根据传递的
isOpen
属性,使用attrs
将附加为
:
const ContainerStyled = styled(ArrowDownIcon).attrs(({ isOpen }) => ({
as: isOpen ? ArrowUpIcon : undefined
}))`
background-color: ${({ isOpen }) => isOpen ? 'red' : ''};
`;
哪个范围是
isOpen
?在编写样式时(isOpen?ArrowUpIcon:ArrowDownIcon)
是否已计算isOpen
?你的例子不清楚。请尝试显示渲染的预期用例。同样,这似乎是一个XY问题:,请解释实际问题是什么,而不是您试图如何解决它
const Container = styled.div`
width: 100px;
height: 100px;
background-color: ${({ isOpen }) => (isOpen ? `red` : `blue`)};
`;
const Component = ({ className }) => <div className={className}>Hello</div>;
const App = () => {
const [isOpen, toggle] = useReducer(p => !p, false);
return (
<>
<Container as={isOpen ? Component : 'div'} isOpen={isOpen} />
<button onClick={toggle}>Toggle</button>
</>
);
};
const ContainerStyled = styled(ArrowDownIcon).attrs(({ isOpen }) => ({
as: isOpen ? ArrowUpIcon : undefined
}))`
background-color: ${({ isOpen }) => isOpen ? 'red' : ''};
`;