import { useState, useCallback, useMemo } from 'react';
import reactLogo from './assets/react.svg';
import viteLogo from '/vite.svg';
import './App.css';
import { ChildArea } from './ChildArea';
export default function App() {
const [text, setText] = useState('');
const [open, setOpen] = useState(false);
const onChangeText = (e) => setText(e.target.value);
const onClickOpen = () => setOpen(!open);
const onClickClose = useCallback(() => setOpen(false), [setOpen]);
const temp = useMemo(() => 1 + 3, []);
return (
<div className="App">
<input value={text} onChange={onChangeText} />
<br />
<br />
<button onClick={onClickOpen}>表示</button>
<ChildArea open={open} onClickClose={onClickClose} />
</div>
);
}
export const InlineStyle = () => {
const containerStyle = {
border: 'solid 2px #392eff',
borderRadius: '20px',
padding: '8px',
display: 'flex',
justifyContent: 'space-around',
alignItems: 'center',
};
const titleStyle = {
margin: '0',
color: '#3d84a8',
};
const buttonStyle = {
backgroundColor: '#abedd8',
border: 'none',
padding: '8px',
borderRadius: '8px',
};
return (
<div style={containerStyle}>
<p style={titleStyle}>- Inline Style -</p>
<button style={buttonStyle}>FIGHT!!</button>
</div>
);
};
// 今回SCSSが読み込まれなかったためCSSを読み込むように変更
import classes from './CssModules.module.css';
export const CssModules = () => {
return (
<div className={classes.container}>
<p className={classes.title}>-CSS Modules-</p>
<button className={classes.button}>FIGHT!!</button>
</div>
);
};
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import './index.css';
import App from './App.jsx';
import { InlineStyle } from './components/InlineStyle';
import { CssModules } from './components/CssModules';
createRoot(document.getElementById('root')).render(
<StrictMode>
<div className="App">
<InlineStyle />
<CssModules />
</div>
</StrictMode>
);