我想說的是
React 的寫法是 Functional Programming
單向資料流,只能
React 使用的是單向資料流
也就是說資料只有一個方向的傳遞
在按摩服務列表中父組件中可以直接把 this.state.list
傳遞給子組件
這樣是沒問題的
例如:
<ul>
{
this.state.massageServiceList.map((massageService, index) => {
return (
<MassageService
key={index+massageService}
massageService={massageService}
index={index}
massageServiceList={this.state.massageServiceList}
deleteService={this.deleteService}
/>
)
})
}
</ul>
但是如果在子組件中我們去改變父組件傳來的資料
handleClick(){
//關鍵區塊----
this.props.massageServiceList=[]
//-----------
this.props.deleteItem(this.props.index)
}
會產生以下錯誤TypeError: Cannot assign to read only property 'massageServiceList' of object '#<Object>'
也許可以理解成:子組件只負責展示結果,若要操作資料還是需要藉由父組件的方法
為什麼不雙向綁定資料呢?這原因其實也很簡單
萬一今天有個元素在多個子組件中都同時被修改
那到底該聽誰的?這種情況下就會產生衝突,為了避免衝突所以使用單向資料流
還有看到一個問題是能不能在 react 專案中使用 JQuery?
先說答案是可以,React只針對 index
下特定的 div
其他 DOM 並不受任何影響,但是盡量別這麼做,保持專案的技術一致
除非是不得已的情況,例如要緩慢更新網站的技術
或是叫做函式編程,有什麼好處呢?
React 也是函數式編程
在大型多人開發的項目中會更加明顯,讓配合和交流都更得心應手
但是對於我這種寫物件導向 (OOP) 語言習慣的人
Functional Programming 是完全的思考方式,要花點時間適應