#前提・実現したいこと
TypeScript, Material-UI, styled-componentsでReactの開発をしています。
Material-UIのオリジナルではuseStylesでスタイリングされているのを、styled-componentsに代替しようとしています。
#発生している問題
Drawerの実装で、spread operatorでcss propertiesをコピーしたいのですが、styled-componentsでうまく実装できません。
attrs
の使い方が誤っているのかなと推測しているのですが、ドキュメントを見ても理解できませんでした。
#該当のソースコード
元のコード:
TypeScript
1const useStyles = makeStyles((theme: Theme) => 2 createStyles({ 3 drawerHeader: { 4 display: 'flex', 5 alignItems: 'center', 6 padding: theme.spacing(0, 1), 7 // necessary for content to be below app bar 8 ...theme.mixins.toolbar, 9 justifyContent: 'flex-end', 10 }, 11 }), 12 ); 13 14const SideDrawerHeader: React.FC = (props) => { 15 const classes = useStyles(); 16 const theme = useTheme(); 17 return ( 18 <div className={classes.drawerHeader}> 19 {props.children} 20 </div> 21 ); 22}
styled-componentsで代用しようとしているコード:
TypeScript
1const SideDrawerHeader: React.FC = (props) => { 2 const classes = useStyles(); 3 const theme = useTheme(); 4 return ( 5 <$DrawerHeader> 6 {props.children} 7 </$DrawerHeader> 8 ); 9} 10 11const $DrawerHeader = styled.div.attrs(props => ({ 12 ...props.theme.mixins.toolbar, 13}))` 14 display: flex; 15 align-items: center; 16 padding: ${props => props.theme.spacing(0, 1)}; 17 justify-content: flex-end; 18`;
#試してみたこと
この質問を見たりしたのですが、今回のケースでは参考にできませんでした。
あなたの回答
tips
プレビュー