簡體   English   中英

在 JavaScript 函數中訪問 Redux 存儲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM