我開始開發將調用API的應用程序,該應用程序需要包含我計劃在Redux存儲中存儲的JWT。在Redux和React Native應用程序中訪問存儲
通常情況下,您可以通過將商店的特定部分映射到組件的狀態mapStateToProps()
和connect()
來訪問Redux存儲,但是我希望在最終不會成爲React組件的文件中訪問Redux存儲/容器 - 只是一個將處理API調用的純js文件。
這可能嗎?
我開始開發將調用API的應用程序,該應用程序需要包含我計劃在Redux存儲中存儲的JWT。在Redux和React Native應用程序中訪問存儲
通常情況下,您可以通過將商店的特定部分映射到組件的狀態mapStateToProps()
和connect()
來訪問Redux存儲,但是我希望在最終不會成爲React組件的文件中訪問Redux存儲/容器 - 只是一個將處理API調用的純js文件。
這可能嗎?
您可以使用由createStore
返回的商店的getState()
功能。你可以在一個函數內部使用這個函數來捕捉來自狀態的所需數據。
const myImportantData =() => store.getState().my.deep.data;
上面的版本直接使用商店,就像在一個全局變量中一樣。這可以防止您在流程中使用多個商店。通常這就是你想要的,但是在服務器上運行時這是不正確的。也就是說,在服務器上,您可能不需要JWT訪問權限。
如果你確實需要但是換店,那麼你可以把它作爲一個參數或關閉在store
局部變量:
const getDataGrabber = store =>() => store.getState().my.deep.data;
是的,這是可能的。
Redux是框架不可知的,雖然它是用React記住的。
mapStateToProps()
和connect()
方法不是核心Redux庫的一部分,而是輔助庫'React-Redux'的一部分,它提供專門用於React中Redux的綁定。
值得看看丹·阿布拉莫夫的Getting started with Redux系列,以得到Redux的膽量工作原理。
其中的一個例子是Video 6和Video 7,他討論了終極版店,並介紹了三種方法彌補:
store.getState // gets the current application state
store.dispatch // changes the current application state by dispatching an action
store.subscribe // suscribes to changes and re-renders the app using the
// current state
的視頻細講公平一點關於如何註冊與商店減速器,所以該系列應該證明非常有幫助。