[英]How to access state/redux store in the useEffect's cleanup function?
[英]Access Redux store in JavaScript function
是否可以將 redux 狀態映射到常規 javascript 函數而不是 React 組件?
如果沒有,是否有另一種方法將 redux 狀態連接到函數? (顯然沒有明確地將它作為參數傳入)
我曾嘗試連接到一個函數,但它中斷了(我沒有確切的錯誤消息。服務器只是遇到了 uncaughtException)。 由於 React 組件可以是純函數, connect()
僅適用於class ComponentName extends Component
(等等)?
我想做這樣的事情的原因:
我有一個 redux 動作生成器,如果它發現動作的結果已經處於 redux 狀態,我希望生成器跳過執行 API 調用,但我不想為每個單獨的 api 調用從每個容器中明確檢查狀態. 這有意義嗎?
感謝您的任何想法。
connect()
帶有react-redux
包,它是 Redux 的 React 綁定。 但是如果你想用通常的 JavaScript 與 Redux 狀態交互,你不需要connect()
或react-redux
。 您可以通過其API直接與 Redux store
交互。
例如,如果你想監聽動作,你可以使用subscribe()
方法如下,並使用getState()
方法訪問state
。
let unsubscribe = store.subscribe(function(){
const state = store.getState();
})
我不太清楚您要實現的目標,但我希望這會有所幫助。
編輯:
您可以在一個文件中創建您的商店並將其導出。
商店.js
import { createStore } from 'redux'
import reducers from "./reducers";
const store = createStore(reducers)
export default store;
現在您可以從任何其他文件導入 store 並使用它。
import store from "./store";
假設你有一個動作。 只需添加一些標記 - 並且減速器將檢測是否跳過該標記:
Action:
{
type: 'SOMETYPE',
paylod: data,
shouldSkip: true
}
Reducer:
export default function ( state = {}, action ) {
if(action.shouldSkip)
return state
switch ( action.type ) {
case "OTHER_TYPE":
return action.payload;
default:
return state;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.