Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React勉強会.pdf
Search
kaminchu
August 07, 2019
Programming
0
210
React勉強会.pdf
kaminchu
August 07, 2019
Tweet
Share
More Decks by kaminchu
See All by kaminchu
jawsug_niigata_20220115
kaminchu
0
240
yarnの話.pdf
kaminchu
1
130
Web_アプリ_勉強会_FE_BE_.pdf
kaminchu
0
870
ルーターの選び方その2.pdf
kaminchu
0
670
ルーターの選び方
kaminchu
0
1.1k
NDS56.pdf
kaminchu
0
65
nds54
kaminchu
0
150
internet
kaminchu
0
2.8k
Other Decks in Programming
See All in Programming
使ってみよう Azure AI Document Intelligence
kosmosebi
2
280
try! Swift Tokyo 2024のLT枠に採択されたプロポーザルを出すときに考えていたこと
ski
0
350
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
350
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
700
Anthropic Cookbook のおすすめレシピ
schroneko
7
860
Netty Chicago Java User Group 2024-04-17
sullis
0
170
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
660
Ruby Function Composition
bkuhlmann
1
330
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
VS Code をプロダクトにどう取り込むか
onomax
1
350
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
370
GitHub Copilotのススメ
marcy731
1
190
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
The Brand Is Dead. Long Live the Brand.
mthomps
49
28k
Producing Creativity
orderedlist
PRO
337
39k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
What the flash - Photography Introduction
edds
64
11k
Music & Morning Musume
bryan
41
5.6k
The Language of Interfaces
destraynor
151
23k
Making Projects Easy
brettharned
108
5.5k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Raft: Consensus for Rubyists
vanstee
132
6.3k
Building Effective Engineering Teams - LeadDev
addyosmani
28
1.8k
Transcript
これからにStyling はemotion でキマリ☆ 2019/08/07 React 勉強会 #1 1
⾃⼰紹介 Twitter @kam1nchu 職種 インフラエンジニア フロントエンドエンジニア 歴 Javascript 歴 3
年 React 歴 3 年 AWS 歴 半年 2
React のStyling は何使ってますか? 3
emotion が盛り上がってきています 4
他のに⽐べて何がいいのか 5
CSS Modules sass とか書けたりはする。CSS とJS の間での定数の共有ができない。 import styles from "./styles.css";
export const StyledButton = () => ( <button className={styles.button}> Styled! </button> ); 6
Inline Styles ⼿軽なので好きだけど、hover とかできないことがある。 css のサンプルのコピペとかし難い。 const styles = {
background: "#fff", padding: "20px", borderRadius: "5px", border: "none", }; export const StyledButton = (props) => ( <button style={props.selected ? styles : {...styles, background: "#ed3330"}}> Styled! </button> ); 7
Styled-Components ⼀⾒便利そうだけど... import styled from "styled-components"; export const StyledButton =
styled.button` background: ${props => props.selected ? "#fff" : "#ed3330"}; padding: 20px; border-radius: 5px; border: none; `; 8
Styled-Components 毎回Component 作らされるの、⾯倒くさくないですか? import styled from "styled-components"; const StyledTable =
styled.table``; const StyledTh = styled.th``; const StykedTr = styled.tr``; export const Table = () => ( <StyledTable> <StyledTh><td> カラム</td><td> カラム</td></StyledTh> <StykedTr><td> 値</td><td> 値</td></StykedTr> </StyledTable> ); 9
そこで 10
emotion 11
inline な感じで書ける /** @jsx jsx */ import { jsx }
from "@emotion/core"; export const StyledComponent = (props) => { return (<div css={{ color: "hotpink" }} {...props}></div>); }; 12
Styled-Components みたいなこともできる import styled from "@emotion/styled"; export const StyledButton =
styled.button` color: turquoise; `; 13
AltCSS っぽいこともできる /** @jsx jsx */ import { jsx, css
} from "@emotion/core"; const styled = css` color: blue; header & { color: green; } `; export const StyledComponent = () => ( <div> <header> <p css={styled}>Green Text</p> </header> <p css={styled}>Blue Text</p> </div> ); 14
emotion(+typescript+parcel) の導⼊の 仕⽅ 15
⾊々⼊れる # ビルド yarn add -D typescript parcel-bundler # react
yarn add -D @types/react @types/react-dom yarn add react react-dom # emotion yarn add @emotion/core @emotion/styled 16
tsconfig.json ( 当然react なので) 、jsx 記法でReact.createElement になるように設定 npx tsc --init
// 略 "jsx": "react" // 略 17
基本的なもの揃える ファイル構成はこんな感じ │ ├ node_modules ├ src ├ index.html ├
App.tsx # ReactDOM.render とかする └ components └ SomeComponent.tsx # emotion で作る ├ package.json ├ yarn.lock └ tsconfig.json 18
component を作る 実は、emotion のcomponent だけはReact.createElement を使わず、 JSX Pragma でempotion の関数を指定する。
/** @jsx jsx */ // ↑これをemotion 使うcomponent のファイルに毎回書く import { jsx, css } from "@emotion/core"; export const SomeComponent = () => ( <div css={css`color: blue;`}></div> ); 19
確認する typescript+parcel なら特に設定はいらない parcel src/index.html 20
おわり 21