一种从提供程序内部的组件修改 redux 存储的方法?



我有一个名为Listener的组件,它的目的是只监听所有本机事件,例如当AppStateBackPressNetInfoGeolocation

我已经像下面这样设置了我的根:

class Root extends Component {
render() {
return (
<Listener>
<Provider>{children}</Provider>
</Listener>
);
}
}

这里的问题是我无法使用react-reduxconnect.是否有其他方法可以从提供程序范围之外调度操作或修改存储,例如在我的设置上Listener

基本上Provider不是来自 redux 的正常Provider,这是我的自定义Provider,我曾经在一个地方包含创建 redux 设置的所有逻辑。

其中的一个片段将是

export default class Provider extends Component {
store: Object;
constructor(props){
super(props);
this.store = createStore(....);
}
}

是的,这是可能的。如果您有权访问创建并传递给提供程序的存储对象,则可以直接调度操作。 前任

import store from './store'
store.dispatch(increment());

文档在这里, https://redux.js.org/api-reference/store

为了修复它,即使我真的很想让Listener在外部示波器上,我也用Provider

class Root extends Component {
render() {
return (
<Provider>
<Listener>{children}</Listener>
</Provider>
);
}
}

有了这个,我现在可以使用react-redux中的connect.这似乎是目前唯一更清洁的方式。

最新更新