Material-UI의 withStyles에서 지정하는 stylesCreator에서 부모로부터 props로 받은 값을 동적으로 적응시키는 HOC
14572 단어 자바스크립트Reactmaterial-ui
Material-UI의 style의 커스텀에 관해서는, 이 기사가 간결하고 알기 쉽기 때문에 여러가지 설명은 할애.
material-ui의 외형을 조정하는 3가지 방법
setup
npx create-react-app my-app
cd my-app
yarn add @material-ui/core
touch src/button.jsx
yarn start
초기 기본 설정
src/button.jsx
import React, { Component } from "react";
import { withStyles } from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
const styles = theme => ({});
const ExtendButton = props => {
const { children } = props;
return <Button variant="contained">{children}</Button>;
};
export default withStyles(styles)(ExtendButton);
src/App.js
import React, { Component } from "react";
import Button from "./button";
class App extends Component {
render() {
return (
<div>
<Button>Hello World</Button>
</div>
);
}
}
export default App;
다음은 기본 설정을 해킹
src/button.jsx
const styles = theme => ({
contained: {
backgroundColor: "green"
}
});
const ExtendButton = props => {
const { classes, children } = props;
return (
<Button
variant="contained"
classes={{
contained: classes.contained
}}
>
{children}
</Button>
);
};
그렇다면 사람은 그렇게됩니다.
src/App.js
return (
<div>
<Button backgroundColor="green">Hello World</Button>
<Button backgroundColor="red">Hello World</Button>
<Button backgroundColor="blue">Hello World</Button>
</div>
);
그런 때는 HOC의 차례
이번 메이드 HOC를 만들어 갑니다
touch src/withStylesProps.jsx
src/withStylesProps.jsx
import { withStyles } from "@material-ui/core/styles";
import * as React from "react";
const withStylesProps = styles => Component => props => {
const Comp = withStyles(styles(props))(Component);
return <Comp {...props} />;
};
export default withStylesProps;
결국 이런 느낌
src/App.js
import React, { Component } from "react";
import Button from "./button";
class App extends Component {
render() {
return (
<div>
<Button backgroundColor="green">Hello World</Button>
<Button backgroundColor="red">Hello World</Button>
<Button backgroundColor="blue">Hello World</Button>
</div>
);
}
}
export default App;
src/button.jsx
import React, { Component } from "react";
import withStylesProps from "./withStylesProps";
import Button from "@material-ui/core/Button";
const styles = props => ({
contained: {
backgroundColor: props.backgroundColor
}
});
const ExtendButton = props => {
const { classes, children } = props;
return (
<Button
variant="contained"
classes={{
contained: classes.contained
}}
>
{children}
</Button>
);
};
export default withStylesProps(styles)(ExtendButton);
「...theme을 계승할 수 있는 것도 준비하는 편이 네」
Reference
이 문제에 관하여(Material-UI의 withStyles에서 지정하는 stylesCreator에서 부모로부터 props로 받은 값을 동적으로 적응시키는 HOC), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lidqqq/items/dc417ec9655393737e3b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)