繁体   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