我有一个Popup
组件,像这样:
import React, { useEffect } from 'react';
import styled from 'styled-components';
const Div = styled.div`
position: absolute;
`;
const Popup = ({ isOpen, onClose, children }) => {
useEffect(() => {
const onClick = e => {
if (isOpen && onClose) {
onClose();
}
};
document.addEventListener('click', onClick);
return () => document.removeEventListener('click', onClick);
}, [isOpen, onClose]);
return <Div>
{isOpen && children}
</Div>;
};
export default Popup;
现在我正试图将其包装到另一个样式化的组件中:
const Menu = styled(Popup)`
background-color: red;
`;
但是使用此Menu
仅应用Popup
中的样式,即背景颜色保持白色。为什么不变成红色?
答案 0 :(得分:1)
您需要向className
组件添加Popup
属性,以允许css-in-js库(styled-component
)注入其样式:
const Popup = ({ isOpen, onClose, children, className }) => {
//...
return <Div className={className}>{isOpen && children}</Div>;
};
请参见Docs中的样式化标准React组件。