下面的截圖取自 Maximilian Schwarzmüller 的 Udemy 課程“React - The Complete Guide (incl Hooks, React Router, Redux)”
當使用useSelector訪問狀態的某些部分時,狀態被傳入的位置并不明顯。在下面的螢屏截圖中,Max 執行useSelector訪問cartIsVisibleui reducer 的方法 - 但是他如何訪問狀態本身?由于 useSelector 只是從 react-redux 中取出的一個鉤子,并且沒有傳入任何其他內容,那么他??如何訪問狀態?當我嘗試它時,console.log(state)它顯示一個未定義狀態的錯誤。

uj5u.com熱心網友回復:
如果你看一下index.js你應該看到一個<Provider包裝App組件
<Provider store={store}>
<App />
</Provider>
鉤子從包裝組件中發送的useSelector狀態獲取狀態。redux store<Provider
這Provider使得 Redux 存盤可用于下面的組件層次結構。
uj5u.com熱心網友回復:
我是 Redux 的維護者,也是最后幾個 React-Redux 版本的作者。
在內部,通過鉤子useSelector訪問 Redux 存盤。然后,它會在任何動作被調度時useContext呼叫以得到通知,并用于獲取最新狀態。最后,它呼叫.store.subscribe()store.getState()yourSelector(state)
有關 React-Redux如何在內部作業的更多詳細資訊,請參閱我的博文The History and Implementation of React-Redux并討論ReactNext 2019:深入了解 React-Redux。
uj5u.com熱心網友回復:
在這種情況下,state是 useSelector 鉤子的一個引數。您不能使用console.log state,因為它屬于useSelector 掛鉤,我相信它超出了您嘗試的console.log 的范圍。
以下內容直接來自 React Redux關于此事的檔案:
選擇器在概念上大致相當于 mapStateToProps 引數來連接。將使用整個 Redux 存盤狀態作為其唯一引數呼叫選擇器。每當函陣列件渲染時,選擇器就會運行(除非它的參考自上次渲染組件以來沒有更改,以便掛鉤可以回傳快取的結果而無需重新運行選擇器)。useSelector() 還將訂閱 Redux 存盤,并在分派操作時運行您的選擇器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410590.html
標籤:
