![](/img/trans.png)
[英]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.