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
この機会にぜひ!
ありがとうございました

React.jsでHowManyPizza