Grid container 과 같은 mui에서 자체적으로 사용하는 props를 styled로 사용하는 방법은 다음과 같다.
이 방법만 알아도 왠만한 css는 정리가 가능할 것이다.
const GridContainer = styled((props) => <Grid container {...props} />) <any>`
width: ${(props) => props.width || `100%`};
height: ${(props) => props.height};
`
- 예시 전체 코드
import { Grid } from '@mui/material'
import { GetServerSideProps, NextPage } from 'next'
import { styled } from '@mui/material/styles'
const GridContainer = styled((props) => <Grid container {...props} />) <any>`
width: ${(props) => props.width || `100%`};
height: ${(props) => props.height};
`
const GridItem = styled((props) => <Grid item {...props} />) <any>`
width: ${(props) => props.width || `100%`};
height: ${(props) => props.height};
`
const Login: NextPage = () => {
return (
<>
<GridContainer height={"300px"} >
</GridContainer>
<GridContainer height={"300px"} >
<GridItem xs={12}>
<GridContainer
direction={"row"}
>
<GridItem xs={4}>
a
</GridItem>
<GridItem xs={4}>
b
</GridItem>
<GridItem xs={4}>
c
</GridItem>
</GridContainer>
</GridItem>
</GridContainer>
</>
)
}
export default Login;
export const getServerSideProps: GetServerSideProps = async (context) => {
return {
props: {
},
};
}
참고로 모듈로 styled 파일을 따로 빼둘 때에는 tsx 확장자로 해야한다.
'Front-End > Next.js' 카테고리의 다른 글
Next.js | 인덱스 형식에 사용할 수 없으므로 요소에 암시적으로 'any' 형식이 있습니다. (0) | 2023.02.10 |
---|---|
Next.js | ReferenceError: React is not defined (0) | 2023.02.08 |
Next.js | Module not found: Can't resolve 'dns' in (0) | 2022.12.13 |
Next.js | 몇 분 전, 몇 시간 전, 몇 일 전 시간표기, 말줄임표 (0) | 2022.11.22 |
Next.js | SNS 로그인 구현 | 카카오 로그인, 로그아웃 구현하기 (0) | 2022.11.11 |