在不同的屏幕中设置Redux商店监听器



我对redux很陌生,因此,如果我的解释有点草率,请原谅:我有一个复杂的react原生应用程序,使用redux存储,但也使用firebase内容和react导航。我在一个parents js文件中声明我的redux存储,该文件用导航器包装了所有其他屏幕,存储的声明如下:

const rootReducer = combineReducers({
auth: authReducer,
myPigeons: pigeonReducer,
myBadges: badgesReducer
});
const store = createStore(rootReducer, applyMiddleware(ReduxThunk));

我知道理论上我现在可以把这样的东西直接应用到我的商店下面:

store.subsribe(state => console.log(state));

每次商店改变他的状态,它都会显示在我的控制台上。我面临的问题是,我想订阅商店,只是不在同一个js文件中。

我想完成的是在整个应用程序中,在导航器子组件的某个位置,监听存储更改,并自动检测存储何时更改。

详细地说,我在一个屏幕上使用了firebase监听器。一旦我想在我的应用程序中更改用户(这就是我重置整个redux存储的地方,这就是我想要一个redux存储监听器的原因(,firebase监听器就不会停止,因为我需要在初始化它们的同一个js文件中停止它们,因此我需要在完全相同的文件中实现redux存储侦听器,,这与我创建redux存储时使用的文件不同我需要在聊天屏幕中收听redux的更改,一旦我更改了用户,我就需要注册redux存储为空,并呼叫我的firebase监听器停止。

你认为这有可能吗?如果有,我该怎么做?

如果问题是由此引起的,可以采取一种方法。

在商店中创建的页面上:

export const store = createStore(rootReducer, applyMiddleware(ReduxThunk));

在商店中要使用的页面上:

import {store} from '....'
store.subscribe (() => {
// You can choose your reducers
let {auth, myPigeons} = store.getState();
console.log(auth);
// Brings up the whole store
let state = store.getState();
console.log(state);
});

所以你可以在任何页面上订阅你的商店。但是,在使用订阅者事件时,请尽量避免内存泄漏。完成后,取消订阅。

最新更新