SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
React.jsで
HowManyPizza??
React.js 超入門

年末JavaScript祭2015 ゆく年くる年
Written By ITかあさん
Who am I ?
ITかあさんITかあさんブログ運営5年

業界10年になる生粋のフリーのWEB屋

What s React.js
What s React.js
M V C
What s React.js
M V C
View (これ
元ネタHOW MANY BEER AND PIZZA?

安藤 祐介さん



–ただ、それだけ。(許可とってます
これパクってReactで作りたい
React.js
• Componentを作るためのViewライブラリ
• Virtual DOMという仕組み
• ブラウザのコンソールでエラー管理が出来て楽
–それがReact.js
速くて、管理しやすい,イケメン。
でも難しそう。。
15分でReact.jsは理解しきれないかも。
たった2つの言葉を覚えてください
JSXとComponent
JSXとComponent
ジェーエスエックスとコンポーネント
JSX
• JavaScript XMLの略。
JSXの例
<div className="navbar-header">
<a className="navbar-brand" href="#">ああああ<
</div>
JSXの例
<div className="navbar-header">
<a className="navbar-brand" href="#">ああああ<
</div>
ほぼほぼHTML。
Component
React.jsはComponent(構成要素)を定義するよ
Componentの例
var PizzaFooter = React.createClass({
render: function(){
return(
<footer className="navbar navbar-default navbar-static-top
……
</footer>
);
}
});
Componentの例
var PizzaFooter = React.createClass({
render: function(){
return(
<footer className="navbar navbar-default navbar-static-top
……
</footer>
);
}
});
赤字の部分はコピペでOK
Componentの出力
ReactDOM.render(
<PizzaFooter />,
document.getElementById('result_area')
);
Componentの出力
ReactDOM.render(
<PizzaFooter />,
document.getElementById('result_area')
);
さっきの

PizzaFooterタグ
Componentの出力
ReactDOM.render(
<PizzaFooter />,
document.getElementById('result_area')
); PizzaFooter出力先
Gist
https://gist.github.com/chihirokaasan/a5325ba3032108cd4a74
React.js JSXのいいところ
• ほぼほぼHTML!
• 自分で新しくタグを定義する
• ライブラリ群読み込むだけで導入もラク!
• ブラウザさえあればすぐにReact.js使える!
はい、私のReactネタは終了です
はえーよ
せっかくなのでJSXをもう少し詳しく
JSXを便利に使う
var PizzaHeader = React.createClass({
render: function(){
return(
<div className= container">
……
{this.props.title}
</div>
);
}
});
JSXを便利に使う
var PizzaHeader = React.createClass({
render: function(){
return(
<div className="container">
……
{this.props.title}
</div>
);
}
});
何か変数っぽい
変数っぽいのを出力
ReactDOM.render(
< PizzaHeader title="あああ"/>,
document.getElementById('result_area')
);
<!̶出力結果̶>

<div class= container >
あああ
</div>
ちなみにprop
this.props.●● で管理


PropにはObjectも関数も何でも入る (ゆるい

PropTypesで型定義できる(それはまたの機会

Component内で変更はしない。それはState



JSX Reactで
• オリジナルのタグが作れる!
• props使って中身の文字列だけ変更可能
簡単だし、明日からちょっと使えそう。
で、ピザアプリ
新しい知識はほぼ無し
雑っ。。How Many Pizza Do You Need?

ITかあさん作

React.jsのイベント
var Result = React.createClass({
getInitialState() {
return {
textValue: 1,
…
};
},
changeText(e) {
this.setState({textValue: this.refs.inputText.value });
},
render() {
return (
<dd>{this.state.textValue}名</dd>
);
}
});
デフォルト値
var Result = React.createClass({
getInitialState() {
return {
textValue: 1,
…
};
},
changeText(e) {
this.setState({textValue: this.refs.inputText.value });
},
render() {
return (
<dd>{this.state.textValue}名</dd>
);
}
});
フォームの文字列を取得
var Result = React.createClass({
getInitialState() {
return {
textValue: 1,
…
};
},
changeText(e) {
this.setState({textValue: this.refs.inputText.value });
},
render() {
return (
<dd>{this.state.textValue}名</dd>
);
}
});
フォームの入力値ここに
var Result = React.createClass({
getInitialState() {
return {
textValue: 1,
…
};
},
changeText(e) {
this.setState({textValue: this.refs.inputText.value });
},
render() {
return (
<dd>{this.state.textValue}名</dd>
);
}
});
デフォルトから値変更
入力した値
こちらに反映
こちらに反映
ただ、それだけ
後の項目は足し算、割り算、かけ算してるだけ

注意点
var Pizza = React.createClass({
render: function(){
return(
<div className="navbar navbar-default navbar-static-top">
…….
</div>
<footer className="navbar navbar-default navbar-static-to
…….
</footer>
);
}
});
注意点
var Pizza = React.createClass({
render: function(){
return(
<div className="navbar navbar-default navbar-static-top">
…….
</div>
<footer className="navbar navbar-default navbar-static-to
…….
</footer>
);
}
});
複数項目はNG! エラー発生!
複数出力
var Pizza = React.createClass({
render: function(){
return(
<div>
<PizzaHeader />
<Result />
<PizzaFooter />
</div>
);
}
});
複数出力
var Pizza = React.createClass({
render: function(){
return(
<div>
<PizzaHeader />
<Result />
<PizzaFooter />
</div>
);
}
});
先にJSX定義して複数呼び出し
複数出力
var Pizza = React.createClass({
render: function(){
return(
<div>
<PizzaHeader />
<Result />
<PizzaFooter />
</div>
);
}
});
複数JSXを持つ、新たなJSXを定義
複数出力
ReactDOM.render(
<Pizza />,
document.getElementById('result_area')
);
複数出力
ReactDOM.render(
<Pizza />,
document.getElementById('result_area')
);
JSXを呼び出したJSXを定義して出力
複雑なHTMLもOK
JSXの組み合わせ!
<PizzaHeader />
<Result />
便利なアドオン
• formsy-react
• TestUtils
• PureRenderMixin
• LinkedStateMixin
便利なアドオン
• formsy-react
• TestUtils
• PureRenderMixin
• LinkedStateMixin
他にも色々あるよー
導入簡単、
アドオンたくさん
導入簡単、
アドオンたくさん
2016年ますます流行るかもしれないReact.js
導入簡単、
アドオンたくさん
2016年ますます流行るかもしれないReact.js
この機会にぜひ!
ありがとうございました

Mais conteúdo relacionado

Mais procurados

なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
健人 井関
 

Mais procurados (20)

NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho ltNetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
 
jQueryを中心としたJavaScript
jQueryを中心としたJavaScriptjQueryを中心としたJavaScript
jQueryを中心としたJavaScript
 
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解するこれで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
 
Playで作るwebsocketサーバ
Playで作るwebsocketサーバPlayで作るwebsocketサーバ
Playで作るwebsocketサーバ
 
Webページで学ぶJavaScript2013 第5回
Webページで学ぶJavaScript2013 第5回Webページで学ぶJavaScript2013 第5回
Webページで学ぶJavaScript2013 第5回
 
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
 
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
 
Learning jQuery
Learning jQueryLearning jQuery
Learning jQuery
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
Nodejs
NodejsNodejs
Nodejs
 
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
好感度をアップさせるための表情トレーニング【男性編】 先生:内田 佳代
 
jQueryで気をつけてほしいこと
jQueryで気をつけてほしいことjQueryで気をつけてほしいこと
jQueryで気をつけてほしいこと
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
 
ServerSideJavaScript
ServerSideJavaScriptServerSideJavaScript
ServerSideJavaScript
 
Webページで学ぶJavaScript2013 第8回
Webページで学ぶJavaScript2013 第8回Webページで学ぶJavaScript2013 第8回
Webページで学ぶJavaScript2013 第8回
 
Java script関数コールの追跡
Java script関数コールの追跡Java script関数コールの追跡
Java script関数コールの追跡
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
GroovyでJSON2014
GroovyでJSON2014GroovyでJSON2014
GroovyでJSON2014
 
これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明
 

Destaque

Destaque (20)

Objective Front-End JavaScript
Objective Front-End JavaScriptObjective Front-End JavaScript
Objective Front-End JavaScript
 
Js祭り
Js祭りJs祭り
Js祭り
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
BuddyPressで街のポータルサイトを作ろう
BuddyPressで街のポータルサイトを作ろうBuddyPressで街のポータルサイトを作ろう
BuddyPressで街のポータルサイトを作ろう
 
20141022 リサーチ向け・ブラウザだけでスクレイピング(浅野)
20141022 リサーチ向け・ブラウザだけでスクレイピング(浅野) 20141022 リサーチ向け・ブラウザだけでスクレイピング(浅野)
20141022 リサーチ向け・ブラウザだけでスクレイピング(浅野)
 
ソーシャル・スクレイピング(2014年10月Webスクレイピング勉強会資料)
ソーシャル・スクレイピング(2014年10月Webスクレイピング勉強会資料)ソーシャル・スクレイピング(2014年10月Webスクレイピング勉強会資料)
ソーシャル・スクレイピング(2014年10月Webスクレイピング勉強会資料)
 
第3回Webスクレイピング勉強会@東京 happyou.info
第3回Webスクレイピング勉強会@東京 happyou.info第3回Webスクレイピング勉強会@東京 happyou.info
第3回Webスクレイピング勉強会@東京 happyou.info
 
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスScraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
 
Atlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
Atlanta OpenStack 2014 Chef for OpenStack Deployment WorkshopAtlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
Atlanta OpenStack 2014 Chef for OpenStack Deployment Workshop
 
Modern Web App Development using ClojureScript & React.js / Baishampayan “BG”...
Modern Web App Development using ClojureScript & React.js / Baishampayan “BG”...Modern Web App Development using ClojureScript & React.js / Baishampayan “BG”...
Modern Web App Development using ClojureScript & React.js / Baishampayan “BG”...
 
OpenStack Deployment with Chef Workshop
OpenStack Deployment with Chef WorkshopOpenStack Deployment with Chef Workshop
OpenStack Deployment with Chef Workshop
 
Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya Grigorik
 
Introduction to Apache Synapse
Introduction to Apache SynapseIntroduction to Apache Synapse
Introduction to Apache Synapse
 
サイト/ブログから本文抽出する方法
サイト/ブログから本文抽出する方法サイト/ブログから本文抽出する方法
サイト/ブログから本文抽出する方法
 
Best Practice for Deploying Application with Heat
Best Practice for Deploying Application with HeatBest Practice for Deploying Application with Heat
Best Practice for Deploying Application with Heat
 
TXLF: Automated Deployment of OpenStack with Chef
TXLF: Automated Deployment of OpenStack with ChefTXLF: Automated Deployment of OpenStack with Chef
TXLF: Automated Deployment of OpenStack with Chef
 
Are We Done Yet ? Testing Your OpenStack Deployment
Are We Done Yet ? Testing Your OpenStack DeploymentAre We Done Yet ? Testing Your OpenStack Deployment
Are We Done Yet ? Testing Your OpenStack Deployment
 
Mirantis open stack deployment automation
Mirantis open stack deployment automationMirantis open stack deployment automation
Mirantis open stack deployment automation
 
大規模ログ分析におけるAmazon Web Servicesの活用
大規模ログ分析におけるAmazon Web Servicesの活用大規模ログ分析におけるAmazon Web Servicesの活用
大規模ログ分析におけるAmazon Web Servicesの活用
 
REST Coder: Auto Generating Client Stubs and Documentation for REST APIs
REST Coder: Auto Generating Client Stubs and Documentation for REST APIsREST Coder: Auto Generating Client Stubs and Documentation for REST APIs
REST Coder: Auto Generating Client Stubs and Documentation for REST APIs
 

Semelhante a React.jsでHowManyPizza

Semelhante a React.jsでHowManyPizza (20)

Intoroduction to React.js
Intoroduction to React.jsIntoroduction to React.js
Intoroduction to React.js
 
React componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけてReact componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけて
 
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
 
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeCreate android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React Natice
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
 
React Nativeでお絵描きしてみた
React Nativeでお絵描きしてみたReact Nativeでお絵描きしてみた
React Nativeでお絵描きしてみた
 
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」
 
Reduxについて
ReduxについてReduxについて
Reduxについて
 
Ma gician <Vue にはできないこと (1)> WeJS 37th
Ma gician <Vue にはできないこと (1)> WeJS 37th Ma gician <Vue にはできないこと (1)> WeJS 37th
Ma gician <Vue にはできないこと (1)> WeJS 37th
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテスト
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashita
 
Reactのおさらい
ReactのおさらいReactのおさらい
Reactのおさらい
 
React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話
 
20190324vvvvオフ会
20190324vvvvオフ会20190324vvvvオフ会
20190324vvvvオフ会
 
自治体サイトのWordPressのメンテナンス
自治体サイトのWordPressのメンテナンス自治体サイトのWordPressのメンテナンス
自治体サイトのWordPressのメンテナンス
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
The First React on Rails
The First React on Rails The First React on Rails
The First React on Rails
 
マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話マルチスレッド問題の特定と再現に頑張った話
マルチスレッド問題の特定と再現に頑張った話
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
 
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
 

React.jsでHowManyPizza