創作內容

2 GP

React-Context

作者:嘟嘟好臘腸的size│2021-10-23 01:30:40│巴幣:1,002│人氣:265
以下記錄目前萌新我對React-Context的認知,若有錯誤請大大們指教

React-Context類似於Redux的概念,同樣具有以下物件:
1. global state: 作為每一個component隨時都可以取得的state。
2. action: 內容包含欲對global state做的動作(action.type)與當下欲傳入global state的資料(action.payload)。
3. dispatch: 接收action,透過將action傳入reducer更新state。
4. reducer: 接收引數action與state,透過傳入引數action.type判斷欲對state改變的動作,並回傳新的state。

使用React-Context會用到以下物件做更簡易的控制:
1. createContext(): 宣告一個使用React-Context的component。
2. <React-Context.Provider>: React-Context的一個component,該component的value prop即為global state資料
3. useReducer(): 傳入要使用的reducer和初始state引數,並回傳當前state和dispatch()
4. useContext(): 回傳value prop資料當前狀態。

簡易範例(省略import):
/* StateProvider.js */
透過createContext()產生StateContext component,
利用箭頭函式實字宣告函數useStateValue(簡易custom Hook),該函數執行useContext(..)獲得value prop資料。

為了簡潔,創建StateProvider component,接收reducer, state初始值, StateProvider在JSX包裹的子物件,並回傳React內建的StateContext與子物件
*為了達到redux的管理方式,此刻global state並非直接傳入value prop,而是傳入useReducer

/* index.js */
將設定好的初始值與reducer傳入StateProvider

當要使用或改變global state時,只需import useStateValue,執行後並解構接收回傳的global state與欲改變global state的dispatch函式,即可在任何一個component操作!

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5297219
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★j22054022 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:通訊組研究所準備過程... 後一篇:快速創建React測試環...

追蹤私訊切換新版閱覽

作品資料夾

ms0489223每天換一首的人
ライオン -May'n看更多我要大聲說1小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】