Box 외에 머티리얼 UI 컴포넌트에 스타일 함수 사용
저는 머티리얼 UI로 시작했습니다. 함께 해주셔서 감사합니다.
<Box mx={2}>
즉시 사용 가능한 (ha) 같은 것을 사용할 수 있다는 것을 알고 있습니다 . 따라서 a 주위에 여백을 두려면 TextField
상자에 포장 할 수 있습니다.
모든 구성 요소가 이러한 스타일 함수 소품을 사용할 수 있도록 내 앱의 테마를 설정하는 간단한 방법이 있습니까? ( m
, p
, display
등)
그래서 나는 <TextField mx={2}/>
그것을 Box
.
문서는 이 작업을 수행 할 수 있다는 것을 의미한다 (예제 사용 ThemeProvider
에서 styled-components
하지만 난 가정 MUI의 그 ThemeProvider
같은 방법 ??? 작동)
import React from 'react'
import { ThemeProvider } from 'styled-components'
const theme = {
spacing: 4,
palette: {
primary: '#007bff',
},
};
export default function App() {
return (
<ThemeProvider theme={theme}>
{/* children */}
</ThemeProvider>
)
}
나는 이것을 시도했지만 TextField's
my
소품 에서 충돌합니다 .
import { createMuiTheme, TextField, ThemeProvider } from '@material-ui/core';
// Greatly simplified version of my component
const App = () => <TextField my={2}/>
let theme = createMuiTheme({})
export default () =>
<ThemeProvider theme={ theme }>
<App/>
</ThemeProvider>;
나는 이와 같이 할 수 있으며 작동합니다.
function App() {
const Input = styled(TextField)(compose(spacing))
return <Input my={3}/>
}
그러나 compose
스타일 함수를 사용하고 싶을 때마다 구성 요소를 사용해야합니다.
답변
워드 프로세서 (간격 단위는 4 픽셀 대신 8px입니다 예를 들어 같은 것을) 박스를 매개 변수화 할 수있는 테마 기능을하는 방법을 보여주고있다 - 테마 이러한 기능을 사용하려면 아무것도하지 않습니다.
Material-UI는 v5의 핵심 구성 요소에서 @ material-ui / system 기능 을 지원할 계획 이지만 아직 몇 달 남았습니다.
주요 옵션은 예제에서 보여준 것과 같은 작업을 수행하는 것 const Input = styled(TextField)(compose(spacing))
입니다 (앱 렌더링 내에서이 작업을 수행하는 대신 최상위 수준으로 이동해야 함 ). 이 TextField
기능을 사용할 때마다 대신 별도의 파일에 넣고이 구성 요소를 가져올 수 있습니다. 예를 들면 :
MyTextField.js
import TextField from "@material-ui/core/TextField";
import { styled } from "@material-ui/core/styles";
import { compose, spacing } from "@material-ui/system";
export default styled(TextField)(compose(spacing));
App.js
import React from "react";
import TextField from "./MyTextField";
export default function App() {
return (
<div className="App">
<TextField variant="outlined" label="Material-UI system demo" />
</div>
);
}
또 다른 옵션은 복제 소품 과 Box
함께 사용 하고 스타일을 지정할 구성 요소를 래핑하는 것입니다. 예를 들면 :
import React from "react";
import TextField from "@material-ui/core/TextField";
import Box from "@material-ui/core/Box";
export default function App() {
return (
<div className="App">
<Box my={3} clone>
<TextField variant="outlined" label="Box demo" />
</Box>
</div>
);
}
다음의 component
소품을 사용할 수도 있습니다 Box
.
import React from "react";
import TextField from "@material-ui/core/TextField";
import Box from "@material-ui/core/Box";
export default function App() {
return (
<div className="App">
<Box my={3} component={TextField} variant="outlined" label="Box demo" />
</div>
);
}
관련 답변 :
- Material-UI Grid는 Display를 사용할 때 숨기지 않습니다.
- Material-UI의 동적 아이콘 크기
- 재질 UI의 세로 간격에 대한 상자 대 className 대 스타일
- 테마 기반 Box 기능을 사용하는 재사용 가능한 구성 요소
- Drawer Compoment와 함께 Material-UI Box 구성 요소 사용
- Material-UI에서 Box 구성 요소를 사용하여 재정의 버튼을 사용하는 방법은 무엇입니까?