// 아래 className 부분이 지저분하다. className 의 사용을 개선해주는
// Lib 가 있다. classNames
// Button.jsx
import React from 'react';
import styles from './Button.module.css';
class Button extends React.Component {
state = {
loading: false,
};
render () {
return(
<button
onClick={this.startLoading}
className={
this.state.loading
? `${styles['button']} + ${styles['loading']}`
: styles['button']
}
{...this.props}
/>
);
}
startLoading = () => {
this.setState({
loading: true,
});
setTimeout(() => {
this.setState({
loading: false,
});
}, 1000);
}
}
export default Button;
==============================================
// Button.modules.css
.button {
background: transparent;
border-radius: 3px;
border: 2px solid palevioletred;
color: palevioletred;
margin: 0 1em;
padding: 0.25em 1em;
font-size: 20px;
}
.loading {
border: 2px solid grey;
color: grey;
}
import styles from "./App.module.css";
import Button from './components/Button';
function App() {
return (
<div className={styles['App']}>
<header className={styles['header']}>
<img src={logo} className={styles['logo']} alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<Button>Button</Button>
</header>
</div>
);
}
export default App;
classnames Lib