SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
ReactでJSONを受け取って表示する
FUNTERACTIVE OPEN MEETING VOL.11
OPEN MEETING VOL.11
twitter@regret_raym
studying…Chef / Fluentd / CreateJS
ファンタラクティブ株式会社
取締役,デザイナー
写真素材サイト ぱくたそ
テクニカル・ディレクター
塚口 祐司
OPEN MEETING VOL.11
OPEN MEETING VOL.11
React
‣ Facebookが開発したUI構築のためのJavaScript
‣ MVCのView
‣ Virtual DOM
‣ JSXというXMLのようなSyntax
https://facebook.github.io/react/
Hellow World
http://facebook.github.io/react/docs/getting-started.html
OPEN MEETING VOL.11
Starter Kit
./
├── README.md
├── build
│   ├── JSXTransformer.js
│   ├── react-with-addons.js
│   ├── react-with-addons.min.js
│   ├── react.js
│   └── react.min.js
├── src
│   ├── helloworld.js
├── helloworld.html
└── examples
※NEW
OPEN MEETING VOL.11
helloworld.html
<!DOCTYPE html>
<html>
<head>
<script src="build/react.js"></script>
<script src="build/JSXTransformer.js"></script>
<script type="text/jsx" src="src/helloworld.js"></script>
</head>
<body>
<div id="example"></div>
</body>
</html>
コア
変換
script
描画先
LESSっぽい
OPEN MEETING VOL.11
helloworld.js
React.render(
<h1>Hellow, world!</h1>
document.getElementById('example')
);
OPEN MEETING VOL.11
JSX
OPEN MEETING VOL.11
JSX
var Hellow = React.createClass({
render: function() {
return (
<div className="hellow">
<h1>Hello, {this.props.name}</h1>
</div>
);
}
});
React.render(
<Hellow name="world!" />,
document.getElementById('example')
);
‣ 一見HTMLに見えるXML
クなsyntax
‣ JSX→JavaScript
イルすることで実行できる
OPEN MEETING VOL.11
‣ オンラインで変換する
‣ JSXTransformer
‣ オフラインで変換する
‣ react-tools
‣ browserify / webpack
‣ reactify / jsx-loader
JSX
$ npm install -g react-tools
$ jsx --watch src/ build/
Component
OPEN MEETING VOL.11
HellowをComponent
var Hellow = React.createClass({
render: function() {
return (
<div className="hellow">
<h1>Hello, {this.props.name}</h1>
</div>
);
}
});
React.render(
<Hellow name="world!" />,
document.getElementById('example')
);
OPEN MEETING VOL.11
React.createClass
var Hellow = React.createClass({
render: function() {
return (
<div className="hellow">
<h1>Hello, {this.props.name}</h1>
</div>
);
}
});
‣ React.createClassにrender
メソッドをもったオブジェク
トを渡すことでコンポーネン
トが作成できる
OPEN MEETING VOL.11
return
var Hellow = React.createClass({
render: function() {
return (
<div className="hellow">
<h1>Hello, {this.props.name}</h1>
</div>
<div>description</div>
);
}
});
‣ Return
Component
OPEN MEETING VOL.11
Prop
var Hellow = React.createClass({
render: function() {
return (
<div className="hellow">
<h1>Hello, {this.props.name}</h1>
</div>
);
}
});
React.render(
<Hellow name="world!" />,
document.getElementById('example')
);
‣ HTMLのattribute
ロパティ値を設定でき、それ
を参照することができる。
‣ 親→子への一方通行
OPEN MEETING VOL.11
State
var Counter = React.createClass({
getInitialState() {
return {
count: 0
};
},
onClick() {
this.setState({count: this.state.count + 1});
},
render() {
return (
<div>
<div>count:{this.state.count}</div>
<button onClick={this.onClick}>click!</button>
</div>
);
}
});
‣ 動的に値が変化するような場
合はStateを使
‣ this.state.XXXXで参照、
this.setState
JSON
OPEN MEETING VOL.11
メンバーリストを表示する
MemberBox
MemberList
Member
JSON
OPEN MEETING VOL.11
JSON
var data = [
{id: 1, author: "井村圭介"},
{id: 2, author: "塚口祐司"}
];
OPEN MEETING VOL.11
Render
React.render(
<MemberBox data={data} />,
document.getElementById('example')
);
MemberBoxにjson値を設定
OPEN MEETING VOL.11
MemberBox
var MemberBox = React.createClass({
getInitialState: function() {
return({
count: this.props.data
});
},
render: function() {
return (
<div className="memberBox">
<h1>Member</h1>
<p>{this.state.count.length} persons</p>
<MemberList data={this.props.data} />
</div>
);
}
});
MemberListに値を渡す
OPEN MEETING VOL.11
MemberList
var MemberList = React.createClass({
render: function() {
var memberNodes = this.props.data.map(function (member) {
return (
<Member author={member.author}></Member>
);
});
return (
<div className="memberList">
{memberNodes}
</div>
);
}
});
JSON値をMemberComponentに設定
OPEN MEETING VOL.11
MemberBox
var Member = React.createClass({
render: function() {
return (
<div className="member">
<h2 className="memberAuthor">
{this.props.author}
</h2>
</div>
)
}
});
渡された値を表示
OPEN MEETING VOL.11
外部API
OPEN MEETING VOL.11
OPEN MEETING VOL.11
OPEN MEETING VOL.11
Render
React.render(
<MemberBox url="https://www.kimonolabs.com/api/7tthqscc?
apikey=fnR8ogc0OeVcgxjrmb9GUiKxrAN5FcxL" />,
document.getElementById('example')
);
OPEN MEETING VOL.11
MemberBox
var MemberBox = React.createClass({
getInitialState: function() {
return {data: []};
},
~~~~
初期化
OPEN MEETING VOL.11
MemberBox
~~~~
loadAjax: function() {
$.ajax({
url: this.props.url,
dataType: 'jsonp',
success: function(data) {
this.setState({data: data.results.collection1});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
~~~~
OPEN MEETING VOL.11
MemberBox
componentDidMount: function() {
this.loadAjax();
},
ComponentがDOMツリーに追加
された状態で呼ばれるのでDOMに
関わる初期化処理を行いたい時
OPEN MEETING VOL.11
OPEN MEETING VOL.11
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

孫子の兵法 Pdf
孫子の兵法 Pdf孫子の兵法 Pdf
孫子の兵法 Pdf
hatisen
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
Tae Young Lee
 
Hyper Threading Technology
Hyper Threading TechnologyHyper Threading Technology
Hyper Threading Technology
nayakslideshare
 
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
Yoshiki Hayama
 
The Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEP
Gregor Schmidt
 

Was ist angesagt? (20)

OSSライセンス入門
OSSライセンス入門OSSライセンス入門
OSSライセンス入門
 
孫子の兵法 Pdf
孫子の兵法 Pdf孫子の兵法 Pdf
孫子の兵法 Pdf
 
ROCm and Distributed Deep Learning on Spark and TensorFlow
ROCm and Distributed Deep Learning on Spark and TensorFlowROCm and Distributed Deep Learning on Spark and TensorFlow
ROCm and Distributed Deep Learning on Spark and TensorFlow
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
人にうれしいAIのUXデザイン - Googleの「People + AI Guidebook」をひもとく:DevLOVE X
人にうれしいAIのUXデザイン - Googleの「People + AI Guidebook」をひもとく:DevLOVE X人にうれしいAIのUXデザイン - Googleの「People + AI Guidebook」をひもとく:DevLOVE X
人にうれしいAIのUXデザイン - Googleの「People + AI Guidebook」をひもとく:DevLOVE X
 
Build, train, and deploy ML models at scale.pdf
Build, train, and deploy ML models at scale.pdfBuild, train, and deploy ML models at scale.pdf
Build, train, and deploy ML models at scale.pdf
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 
Hyper Threading Technology
Hyper Threading TechnologyHyper Threading Technology
Hyper Threading Technology
 
Third Gen Production ML Architectures: Lessons from History, Experiences with...
Third Gen Production ML Architectures: Lessons from History, Experiences with...Third Gen Production ML Architectures: Lessons from History, Experiences with...
Third Gen Production ML Architectures: Lessons from History, Experiences with...
 
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
 
AI Security : Machine Learning, Deep Learning and Computer Vision Security
AI Security : Machine Learning, Deep Learning and Computer Vision SecurityAI Security : Machine Learning, Deep Learning and Computer Vision Security
AI Security : Machine Learning, Deep Learning and Computer Vision Security
 
第34回CV勉強会「コンピュテーショナルフォトグラフィ」発表資料
第34回CV勉強会「コンピュテーショナルフォトグラフィ」発表資料第34回CV勉強会「コンピュテーショナルフォトグラフィ」発表資料
第34回CV勉強会「コンピュテーショナルフォトグラフィ」発表資料
 
データ連携基本アーキ 川合雅巳
データ連携基本アーキ 川合雅巳データ連携基本アーキ 川合雅巳
データ連携基本アーキ 川合雅巳
 
WBAレクチャー#1脳機能の体系的理解を目指して(山川宏)
WBAレクチャー#1脳機能の体系的理解を目指して(山川宏)WBAレクチャー#1脳機能の体系的理解を目指して(山川宏)
WBAレクチャー#1脳機能の体系的理解を目指して(山川宏)
 
LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드
 
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
 
The Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEP
 
サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...
サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...
サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っ...
 
ユーザーにうれしいチャットボットのUX 7原則 - 7 Principles to Design UX of Chatbots
ユーザーにうれしいチャットボットのUX 7原則 - 7 Principles to Design UX of ChatbotsユーザーにうれしいチャットボットのUX 7原則 - 7 Principles to Design UX of Chatbots
ユーザーにうれしいチャットボットのUX 7原則 - 7 Principles to Design UX of Chatbots
 
UIデザインの基本
UIデザインの基本UIデザインの基本
UIデザインの基本
 

Ähnlich wie React入門-JSONを取得して表示する

IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
IntelliJ IDEAとKotlinで作るSpring 5アプリケーションIntelliJ IDEAとKotlinで作るSpring 5アプリケーション
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
CASAREAL, Inc.
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 

Ähnlich wie React入門-JSONを取得して表示する (20)

JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 
Async awaitでの繰り返し処理についての小話
Async awaitでの繰り返し処理についての小話Async awaitでの繰り返し処理についての小話
Async awaitでの繰り返し処理についての小話
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
React Nativeで始めるアプリ開発
React Nativeで始めるアプリ開発React Nativeで始めるアプリ開発
React Nativeで始めるアプリ開発
 
REACT & WEB API
REACT & WEB APIREACT & WEB API
REACT & WEB API
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
 
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
 
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
IntelliJ IDEAとKotlinで作るSpring 5アプリケーションIntelliJ IDEAとKotlinで作るSpring 5アプリケーション
IntelliJ IDEAとKotlinで作るSpring 5アプリケーション
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
Alfresco CI
Alfresco CIAlfresco CI
Alfresco CI
 
Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
 
JSオジサン openframeworks emscripten
JSオジサン openframeworks emscriptenJSオジサン openframeworks emscripten
JSオジサン openframeworks emscripten
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~~初心者がこれから Web アプリの開発をするために~
~初心者がこれから Web アプリの開発をするために~
 
Ltctjs
LtctjsLtctjs
Ltctjs
 
React入門
React入門React入門
React入門
 
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのかreact-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
 

Mehr von regret raym

Jenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携するJenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携する
regret raym
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
regret raym
 
Movable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイトMovable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイト
regret raym
 
Css拡張言語のコトハジメ
Css拡張言語のコトハジメCss拡張言語のコトハジメ
Css拡張言語のコトハジメ
regret raym
 

Mehr von regret raym (18)

SlackにHubotを設定して対話する
SlackにHubotを設定して対話するSlackにHubotを設定して対話する
SlackにHubotを設定して対話する
 
CreateJSを使ったアニメーション表現の基礎
CreateJSを使ったアニメーション表現の基礎CreateJSを使ったアニメーション表現の基礎
CreateJSを使ったアニメーション表現の基礎
 
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
1年間で100万PV増やしたコンテンツ運用と最適化|写真素材サイトぱくたそ
 
FluentdとGrothForecastをインストールする
FluentdとGrothForecastをインストールするFluentdとGrothForecastをインストールする
FluentdとGrothForecastをインストールする
 
Chefで作る開発環境
Chefで作る開発環境Chefで作る開発環境
Chefで作る開発環境
 
Dockerの導入
Dockerの導入Dockerの導入
Dockerの導入
 
Jenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携するJenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携する
 
Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01
 
MT東京 ぱくたそ/PAKUTASO
MT東京 ぱくたそ/PAKUTASOMT東京 ぱくたそ/PAKUTASO
MT東京 ぱくたそ/PAKUTASO
 
今から始めるPhotoshopによるWeb制作-初期設定編
今から始めるPhotoshopによるWeb制作-初期設定編今から始めるPhotoshopによるWeb制作-初期設定編
今から始めるPhotoshopによるWeb制作-初期設定編
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
 
Yurufuwa007
Yurufuwa007Yurufuwa007
Yurufuwa007
 
WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法
 
WordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 handson PortfolioWordCamp Tokyo2012 handson Portfolio
WordCamp Tokyo2012 handson Portfolio
 
WordCamp Tokyo2012 Session
WordCamp Tokyo2012 SessionWordCamp Tokyo2012 Session
WordCamp Tokyo2012 Session
 
Movable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイトMovable typeでモバイルギャラリーサイト
Movable typeでモバイルギャラリーサイト
 
Css拡張言語のコトハジメ
Css拡張言語のコトハジメCss拡張言語のコトハジメ
Css拡張言語のコトハジメ
 
Wp html5
Wp html5Wp html5
Wp html5
 

React入門-JSONを取得して表示する