Submit Search
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
96 likes
76,084 views
Kohei Asai
2015/05/27にLINE社で行われた、Data Binding JS Nightでの発表内容です。
Engineering
Read more
1 of 29
Download now
Downloaded 50 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
More Related Content
PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
PPTX
ミクシィ 21卒向け Android研修
akkuma
PDF
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
PDF
Observableで非同期処理
torisoup
PDF
Javaのログ出力: 道具と考え方
Taku Miyakawa
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
PDF
MvcのFatモデルに立ち向かう
Shun Hikita
PDF
Apache tinkerpopとグラフデータベースの世界
Yuki Morishita
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
ミクシィ 21卒向け Android研修
akkuma
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
Observableで非同期処理
torisoup
Javaのログ出力: 道具と考え方
Taku Miyakawa
世界一わかりやすいClean Architecture
Atsushi Nakamura
MvcのFatモデルに立ち向かう
Shun Hikita
Apache tinkerpopとグラフデータベースの世界
Yuki Morishita
What's hot
(20)
PDF
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
PDF
できる!並列・並行プログラミング
Preferred Networks
PDF
nginxの紹介
Takashi Takizawa
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
PDF
Unity開発で使える設計の話+Zenjectの紹介
torisoup
PPTX
いまさら学ぶMVVMパターン
Yuta Matsumura
PDF
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
PDF
オブジェクト指向できていますか?
Moriharu Ohzu
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
PDF
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty
PDF
CI/CDって何が良いの?〜言うてるオレもわからんわ〜 #DevKan
Kazuhito Miura
PDF
イミュータブルデータモデルの極意
Yoshitaka Kawashima
PPTX
イベント・ソーシングを知る
Shuhei Fujita
PPTX
5分で出来る!イケてるconfluenceページ
CLARA, Inc.
PDF
Unityでオンラインゲーム作った話
torisoup
PDF
ブラック企業から学ぶMVCモデル
Yuta Hiroto
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
できる!並列・並行プログラミング
Preferred Networks
nginxの紹介
Takashi Takizawa
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Unity開発で使える設計の話+Zenjectの紹介
torisoup
いまさら学ぶMVVMパターン
Yuta Matsumura
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
オブジェクト指向できていますか?
Moriharu Ohzu
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty
CI/CDって何が良いの?〜言うてるオレもわからんわ〜 #DevKan
Kazuhito Miura
イミュータブルデータモデルの極意
Yoshitaka Kawashima
イベント・ソーシングを知る
Shuhei Fujita
5分で出来る!イケてるconfluenceページ
CLARA, Inc.
Unityでオンラインゲーム作った話
torisoup
ブラック企業から学ぶMVCモデル
Yuta Hiroto
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
Ad
Viewers also liked
(8)
PDF
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
PDF
フロントエンド初学者がSPAに手を出してみた
Kei Yagi
PPTX
React を導入したフロントエンド開発
daisuke-a-matsui
PPTX
今からでも遅くない! React事始め
ynaruta
PDF
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
PDF
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
JustSystems Corporation
PPTX
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
Carol Smith
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
フロントエンド初学者がSPAに手を出してみた
Kei Yagi
React を導入したフロントエンド開発
daisuke-a-matsui
今からでも遅くない! React事始め
ynaruta
React系(別言語含む)の サーバーサイドレンダリング について考えよう
Kazuhiro Hara
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
JustTechTalk#10windowsアプリでのテスト自動化事例
JustSystems Corporation
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
Carol Smith
Ad
Similar to コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
(14)
PDF
React+TypeScriptもいいぞ
Mitsuru Ogawa
PPTX
Reactに触れてみた
iPride Co., Ltd.
PDF
React.js + Flux入門 #scripty02
Yahoo!デベロッパーネットワーク
PPTX
SYSTEMI勉強会まとめ資料(React基礎まとめ)
YoshikiWatanabe1
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
PDF
Start React with Browserify
Muyuu Fujita
PDF
データビジュアライゼーションの作り方
清水 正行
PDF
react-ja.pdf
ssuser65180a
PDF
Intoroduction to React.js
Yuto Matsukubo
PDF
20160421 react勉強会
Naoki Kurosawa
PDF
React introduntion
YutaShimabukuro
PPTX
Flight入門
Toshihiro Yagi
PDF
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
PDF
サービス開発における フロントエンド・ドメイン駆動設計の実践
TakefumiYoshii
React+TypeScriptもいいぞ
Mitsuru Ogawa
Reactに触れてみた
iPride Co., Ltd.
React.js + Flux入門 #scripty02
Yahoo!デベロッパーネットワーク
SYSTEMI勉強会まとめ資料(React基礎まとめ)
YoshikiWatanabe1
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
Start React with Browserify
Muyuu Fujita
データビジュアライゼーションの作り方
清水 正行
react-ja.pdf
ssuser65180a
Intoroduction to React.js
Yuto Matsukubo
20160421 react勉強会
Naoki Kurosawa
React introduntion
YutaShimabukuro
Flight入門
Toshihiro Yagi
マーブル図で怖くないRxJS
bitbank, Inc. Tokyo, Japan
サービス開発における フロントエンド・ドメイン駆動設計の実践
TakefumiYoshii
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
1.
コンポーネント指向 による、Reactの ベストプラクティスと バッドプラクティス @axross Data Binding JS
Night
2.
Hi :) • Kohei
Asai • @axross • Software Engineer • React.js, express.js
3.
コンポーネント指向
4.
コンポーネント指向を推奨
5.
ReactのにおけるComponent const SomeComponent =
React.createClass({ render() { return ( <div> <span>{this.state.valueA}</span> <span>{this.props.valueB}</span> </div> ); }, }); 内部状態 外からの値 Component = DOMとJSのセット、UI部品
6.
値 -> DOM
変換器 • stateを使わず、propsを使うようにすれば、 Componentは「値 -> DOM 変換器」になる Componentprops DOM ( or Virtual DOM)
7.
JSがDOMを支配する世界 • XHRとHistory APIでSPAが可能になった •
すべての状態をJavaScriptが管理できる • JavaScriptがDOMを支配する世界
8.
Data-bindedな「DOM」とは • データバインドされたすべてのDOMは、 JavaScriptの値によって吐き出される • ならば、DOMはコンパイル結果物 •
データバインディングの嬉しさはここにある
9.
Reactの思想から逆算する ベストプラクティスと バッドプラクティス
10.
コンポーネント指向 3つの法則 • 値をDOMに変換する装置であることを徹する •
再利用されることを前提にする • コンポーネントとそうでないものを明確に分 ける
11.
値をDOMに変換する装置 であることを徹する
12.
冪等性を守る • 通常は「値 ->
DOM 変換器」であるはず • 受け入れた値が同じであれば、吐き出される DOMは常に同じはず • つまり、冪等性があるはず
13.
余計な仕事はさせない • それ以上の仕事をさせると、犠牲を生む • 必要以上なstateの保持・利用 •
コンポーネントの中でXHR • = 冪等性を失う • = 疎結合ではなくなる
14.
必要以上に状態を持たせない • 必要以上に状態を持たせると • 同じ値を外から与えたとしても、吐き出さ れるDOMが違うものになる可能性がある •
= テストが困難になる
15.
副作用のある行為を含めない • 副作用のある行為はコンポーネントの外ですべき • XHR、Web
Storageへのアクセスなど • FluxのStoreをsubscribeするなど • = 結果的に状態を持ってしまう • = 依存が増え、テストが困難になる
16.
コンポーネントが再利用 されることを前提にする
17.
componentDidMountに注意 • componentDidMountで、writeな作用のある Flux Actionを呼んでいる •
コンポーネントをmountしただけで、 他のコンポーネントに作用してしまう • = コンポーネントの副作用
18.
「どう使うか」は「使う時」に • コンポーネント自体の位置やサイズを指定す るCSSもよろしくない • それは「コンポーネントをどう使うか」と いう話であって、「コンポーネントの定義」 とはコンテキストが異なってしまう •
= 別の場所にそのまま置けない
19.
コンポーネントと そうでないものを 明確に分ける
20.
「そうでないもの」も必要 • 冪等性のあるコンポーネントのみでクライア ントサイドのアプリケーションは作れない • 誰かが状態を持ったり、XHRする必要がある •
無理のないように設計するには、 「そうでないもの」も必要
21.
テスト可能範囲を広げるために • Componentの親となる層は諦める • 状態を持ち、Flux
Storeをsubscribeする • コンポーネントにpropsを渡す • ユニットテストが不可能な唯一の存在 • = 代わりに他のすべてのテストが容易になる
22.
CSS設計へのアンサー
23.
単位を合わせる • 1 コンポーネント
= 1 BEM Blockとかにする • ファイル名、セレクタ名も合わせる • 名前の競合が防がれる • 他のセレクタへの依存や影響がなくなる • = カジュアルに削除できる・再利用できる
24.
まとめ
25.
Reactとコンポーネント • Reactはコンポーネント指向 • コンポーネントは、値
-> DOM 変換器 として 機能する
26.
コンポーネント指向 3つの法則 • 値
-> DOM 変換器 であることを徹する • 再利用されることを前提にする • コンポーネントとそうでないものを明確に分 ける
27.
メリット • テスタブル • 冪等性と疎結合であることが担保される •
カジュアルな変更・削除と再利用が可能 • 高速なPDCAサイクルに弱くない • CSS設計も助ける
28.
みんなもReact使おう!
29.
Thank you for listening
:)
Download