🐣
【日報】React実践の教科書 P141〜154
作成日:
2021/12/15
3
今日やったこと
- 「モダンJavaScriptの基本から始める React実践の教科書」 P141〜154
- 5-5 Emotion
- 5-6 Tailwind CSS
学習メモ
Emotion
- 記述の仕方が自由に選べる
- まだベストプラクティスが見つかっていない時など、模索しながら試していきたいときは良い選択肢になる
- ルールを決めずに運用してしまうと、各々好きな書き方をしてしまい、保守性が低下する危険性もある
$ yarn add @emotion/react @emotion/styled
/** @jsxImportSource @emotion/react */
import { jsx, css } from "@emotion/react";
/** styled componentsのような書き方をするために必要なパッケージ */
import styled from "@emotion/styled";
export const Emotion = () => {
// scssの書き方がそのまま可能な書き方
const containerStyle = css`
border: solid 1px #AAA;
border-radius: 20px;
padding: 8px;
margin: 8px;
display: flex;
justify-content: space-around;
align-items: center;
`;
// インラインスタイルの書き方
const titleStyle = css({
margin: 0,
color: "#AAA"
});
// styled-components の書き方
const SButton = styled.button`
background-color: #DDD;
border: none;
padding: 8px;
border-radius: 8px;
&:hover {
background-color: #AAA;
color: #FFF;
cursor: pointer;
}
`;
return (
<div css={containerStyle}>
<p css="titleStyle">Emotionです</p>
<SButton>ボタン</SButton>
</div>
);
};
Tailwind CSS
- Reactだけでなく、通常のHTMLやVueなどにも使用することができる
- 慣れると早く書ける
- 命名に悩まなくて良い
$ yarn add tailwindcss@npm:@tailwindcss/postcss7-compat @tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
CRACO
Create React App の場合、Tailwind の動作に必要なPostCSSを上書くことができないため、CRACO(Create React App Configuration Override)というものを使用する
- パッケージのインストール
yarn add @craco/craco
- package.jsonをCRACOを使って起動するように変更
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
},
- プロジェクトルートに craco.config.js を作成
module.exports = {
style: {
postcss: {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
],
},
},
}
4.tailwind.config.jsの作成
$ npx tailwindcss init
上記のコマンドをプロジェクトルートパスで実行すると、tailwind.config.jsという名前で以下のファイルが生成される
module.exports = {
purge: [],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
上記のpurge
オプションでは、指定したファイルの中で使用していないスタイルがあるとビルド時に自動で取り除いてくれるので、コンポーネントとindex.htmlを指定する
module.exports = {
purge: ['./src/**/*.{js,jsx.ts.tsx}', './public/index.html'],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
- index.cssの作成&修正
@tailwind base;
@tailwind components;
@tailwind utilities;
- index.js で index.cssを読み込み
import ReactDOM from "react-dom";
import { TailwindCss } from "./components/TailwindCss.jsx";
import './css/index.css';
ReactDOM.render(<TailwindCss/>, document.getElementById("root"));
Tailwind CSS での実装
export const TailwindCss = () => {
return (
<div className="border border-gray-400 rounded-2xl p-2 m-2 flex justify-around items-center">
<p className="m-0 text-gray-400">Tailwind CSSです</p>
<button className="bg-gray-300 border-0 p-2 rounded-md hover:bg-gray-400 hover:text-white">ボタン</button>
</div>
);
};
所感
CSSについてのチャプターが終わりました。
Tailwind CSSは、自分のプロジェクトで使うことはなさそうですが
採用されているプロジェクトにアサインされた場合に対応できるので
あらかじめ知ることができて良かったと思います。