useState
用 JavaScript 寫 to-do list 大概會有什麼步驟呢?
- 可能有 input, button, ul 這些標籤
- 監聽 click、submit、change 等事件
- 事件觸發後把 input 的內容存起來
- 產生一串 HTML 字串並塞入剛剛 input 的內容
- 將剛剛產生的字串賦值到 ul 的
innerHTML
步驟看來不多,但規模擴大到整個網站後,程式碼通常會開始變得混亂,
利用前端框架就可以更簡潔地管理這些事件邏輯。
state
使用者感覺到「互動」是因為透過「自己的行為操作使畫面內容改變」了。
原理就是利用程式碼改變 DOM,所以「互動」可能令某些資料改變,
例如按下 enter 會跳出搜尋結果,點擊新增待辦就會更新待辦列表等等,
因此需要產生「基於新資料的畫面」。
資料的變動就是「狀態」的改變。
我們可以自己決定要觀察什麼資料的「狀態」,
以剛剛的 to-do list 為例,在 input 的值存進陣列後畫面需要產生新的列表,
使用者才知道自己剛剛輸入的待辦有成功被新增。
這個陣列就是我們要觀察的資料,陣列的內容被改變了,因此產生新的畫面。
React 的運作大致上是圍繞這樣的狀態變化機制,
出問題的第一步通常也是去追溯是哪個東西的狀態有問題。
用法
專案建好後預設會把許多元件集合成一包叫做 <App/>
的元件,