SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
LEARNING REACTS #2
@ Forum: Shiiir
@ Author: Cara_wang
@ Date: 2015/03/25
demo
https://github.com/CaraWang/reactjs-fb-like-button-and-leave-message
把程式 clone 到 cloud 9
git clone https://github.com/CaraWang/reactjs-fb-like-button-and-
leave-message.git
mv learning-reactjs-second-demo-communication-between-
components/* .
有個點點唷!
rm -rf learning-reactjs-second-demo-communication-between-
components/
上次學會⽤用元件堆出⼀一個⾴頁⾯面
來拆分 demo 中的元件
fbPerson
fbContent
fbButton
countLike
oneMessage
messageBox
fbTemplate
<fbPerson />
<fbContent />
<fbButton />
<countLike />
<oneMessage />
<messageBox />
這次要看元件間要如何溝通
溝通有兩種
⽗父親跟⼦子孫溝通
⼦子孫想跟其他⼦子孫溝通
⼦子孫間的溝通要靠共同的⽗父親
這次要看元件間要如何溝通
demo 中哪裡需要溝通
fbPerson
fbContent
fbButton
countLike
oneMessage
messageBox
fbTemplate
1. onClick
2. signal
3. add count
1/3
這次要看元件間要如何溝通
demo 中哪裡需要溝通
fbPerson
fbContent
fbButton
countLike
oneMessage
messageBox
fbTemplate
1. onClick
2. signal
3. focus
2/3
這次要看元件間要如何溝通
demo 中哪裡需要溝通
fbPerson
fbContent
fbButton
countLike
oneMessage
messageBox
fbTemplate
1. press enter
2. signal
3. append message
3/3
3. remove value
這次要看元件間要如何溝通
溝通有兩種
⽗父親跟⼦子孫溝通
⼦子孫想跟其他⼦子孫溝通
⼦子孫間的溝通要靠共同的⽗父親
這次要看元件間要如何溝通
溝通有兩種
⽗父親跟⼦子孫溝通
@fbTemplate.js
<fbPerson id=“cara4bear” />
<div> My Id is {this.props.id}</div>
@fbPerson.js
⼦子孫⽤用 this.props.xxx 接收⽗父親給他的參數
1/2
這次要看元件間要如何溝通
溝通有兩種
⽗父親跟⼦子孫溝通
@fbTemplate.js
<fbPerson id=“cara4bear” />傳固定值
<fbPerson id={myId} />傳變數
<FbButton signalCount={this.triggerCount} />傳 function
2/2
這次要看元件間要如何溝通
溝通有兩種
⼦子孫透過⽗父親跟其他⼦子孫溝通
countLike
fbButton
我想跟你溝通
fbButton countLike
fbTemplate
1/2
這次要看元件間要如何溝通
溝通有兩種
⼦子孫透過⽗父親跟其他⼦子孫溝通fbButton countLike
fbTemplate
@fbButton.js
<div onClick={this.props.signalCount} />1.
@fbTemplate.js
triggerCount: function() {
this.refs.counter.addCount();
}
2.
等於
<CountLike ref="counter"/>3.
利⽤用設定 ref 讓⽗父親可以輕易找到⼦子孫跟他溝通
2/2
重新整理⼀一下
@fbTemplate.js
<FbButton signalCount={this.triggerCount} />
@fbButton.js
<div onClick={this.props.signalCount} />
@fbTemplate.js
triggerCount: function() {
this.refs.counter.addCount();
}
addCount: function() {
var nowCount = this.state.count + 1;
this.setState({count: nowCount});
},
@countLike.js
準備實作囉!!!!
這次試試看⽤用 client side 開發
在index.html 載⼊入元件
<!--- components --->
<script type="text/jsx" src="./assets/js/components/fbPerson.js"></script>
<script type="text/jsx" src="./assets/js/components/fbButton.js"></script>
<script type="text/jsx" src="./assets/js/components/countLike.js"></script>
<script type="text/jsx" src="./assets/js/components/messageBox.js"></script>
<script type="text/jsx" src="./assets/js/components/oneMessage.js"></script>
<script type="text/jsx" src="./assets/js/components/fbContent.js"></script>
<script type="text/jsx" src="./assets/js/components/fbTemplate.js"></script>
<!--- pages --->
<script type="text/jsx" src="./assets/js/fbPage.js"></script>
1/2
這次試試看⽤用 client side 開發
@data/fbId.js
var myId = "cara4bear";21:
@fbTemplate.js
2/2
⼀一開始開發 Reactjs 要知道的事
component 的概念
⽗父元件傳參數給⼦子元件⽤用 this.props.xxx
⼦子元件間想要溝通透過 ref and this.refs.xxx
Reactjs 定義⼀一個元件在 DOM 上的⾏行為操作: lifecycle
其他 Reactjs 官⽅方開發的好⽤用⼯工具: addon
1.
2.
3.
4.
5.
http://facebook.github.io/react/docs/component-specs.html
http://facebook.github.io/react/docs/addons.html
git checkout practice
開始 workshop 囉

Más contenido relacionado

Destacado

Nguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quên
Nguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quênNguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quên
Nguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quêndavina566
 
Step 1 Empathy INF GA 01
Step 1 Empathy INF GA 01Step 1 Empathy INF GA 01
Step 1 Empathy INF GA 01sesevh
 
Механизм успешной акции
Механизм успешной акцииМеханизм успешной акции
Механизм успешной акцииFrendi
 
1414 15 w 4meters all in one di
1414   15 w  4meters   all  in one  di1414   15 w  4meters   all  in one  di
1414 15 w 4meters all in one diCaroline Mega
 
CURRICULUM VITAE T FIDLER
CURRICULUM VITAE T FIDLERCURRICULUM VITAE T FIDLER
CURRICULUM VITAE T FIDLERTony Fidler
 
Информационные технологии в деятельности психолога практика: повышение квалиф...
Информационные технологии в деятельности психолога практика: повышение квалиф...Информационные технологии в деятельности психолога практика: повышение квалиф...
Информационные технологии в деятельности психолога практика: повышение квалиф...Ilya Perminov
 
Likely challenges to S&R-EXTENDED VERSION
Likely challenges to S&R-EXTENDED VERSIONLikely challenges to S&R-EXTENDED VERSION
Likely challenges to S&R-EXTENDED VERSIONElisabetta Benedetti
 
Жалобы в подарок: претензии клиентов как движущий механизм изменений в компании
Жалобы в подарок: претензии клиентов как движущий механизм изменений в компанииЖалобы в подарок: претензии клиентов как движущий механизм изменений в компании
Жалобы в подарок: претензии клиентов как движущий механизм изменений в компанииFrendi
 

Destacado (12)

Nguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quên
Nguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quênNguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quên
Nguy cơ mất trí nhớ, Alzheimer do đãng trí, hay quên
 
Cv
CvCv
Cv
 
Step 1 Empathy INF GA 01
Step 1 Empathy INF GA 01Step 1 Empathy INF GA 01
Step 1 Empathy INF GA 01
 
Механизм успешной акции
Механизм успешной акцииМеханизм успешной акции
Механизм успешной акции
 
Análise Criminal
Análise CriminalAnálise Criminal
Análise Criminal
 
1414 15 w 4meters all in one di
1414   15 w  4meters   all  in one  di1414   15 w  4meters   all  in one  di
1414 15 w 4meters all in one di
 
CURRICULUM VITAE T FIDLER
CURRICULUM VITAE T FIDLERCURRICULUM VITAE T FIDLER
CURRICULUM VITAE T FIDLER
 
Angular js
Angular jsAngular js
Angular js
 
Информационные технологии в деятельности психолога практика: повышение квалиф...
Информационные технологии в деятельности психолога практика: повышение квалиф...Информационные технологии в деятельности психолога практика: повышение квалиф...
Информационные технологии в деятельности психолога практика: повышение квалиф...
 
J KHAN CV
J KHAN CVJ KHAN CV
J KHAN CV
 
Likely challenges to S&R-EXTENDED VERSION
Likely challenges to S&R-EXTENDED VERSIONLikely challenges to S&R-EXTENDED VERSION
Likely challenges to S&R-EXTENDED VERSION
 
Жалобы в подарок: претензии клиентов как движущий механизм изменений в компании
Жалобы в подарок: претензии клиентов как движущий механизм изменений в компанииЖалобы в подарок: претензии клиентов как движущий механизм изменений в компании
Жалобы в подарок: претензии клиентов как движущий механизм изменений в компании
 

Más de Szuping Wang

Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事Szuping Wang
 
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHLaradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHSzuping Wang
 
Api survey #5 - firebase cloud messaging
Api survey #5  - firebase cloud messagingApi survey #5  - firebase cloud messaging
Api survey #5 - firebase cloud messagingSzuping Wang
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseSzuping Wang
 
cnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchcnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchSzuping Wang
 
cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料Szuping Wang
 
team18_媒體偏坦度
team18_媒體偏坦度team18_媒體偏坦度
team18_媒體偏坦度Szuping Wang
 

Más de Szuping Wang (8)

Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事
 
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHLaradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTH
 
Api survey #5 - firebase cloud messaging
Api survey #5  - firebase cloud messagingApi survey #5  - firebase cloud messaging
Api survey #5 - firebase cloud messaging
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime database
 
cnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchcnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearch
 
cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料
 
team18_媒體偏坦度
team18_媒體偏坦度team18_媒體偏坦度
team18_媒體偏坦度
 
Git 好吃嗎
Git 好吃嗎Git 好吃嗎
Git 好吃嗎
 

Learning Reactjs - 學習 Reactjs 建構 Facebook 元件