【发布时间】:2017-10-29 23:07:27
【问题描述】:
我想在所有组件中测试用户是否连接到互联网。
我可以在每个组件中使用NetInfo,但由于我使用的是redux,我认为使用中间件(?)可以更轻松地完成。
我用过
import { createStore, applyMiddleware } from 'redux';
const netInfo = store => next => action => {
const listener = (isConnected) => {
store.dispatch({
type: types.NET_INFO_CHANGED,
isConnected,
});
};
NetInfo.isConnected.addEventListener('change', listener);
NetInfo.isConnected.fetch().then(listener);
return next(action);
};
const store = createStore(AppReducer, applyMiddleware(netInfo));
其中AppReducer 就是combineReducers(navReducer, netInfoReducer, ...)。
它似乎确实有效,但我真的很担心它是否表现得足够好。它似乎只运行一次,但我从不删除监听器或任何东西。
如果您想使用 isConnected 变量填充所有组件,您通常会这样做吗?
【问题讨论】:
-
不能用 HOC 实现同样的事情吗?我猜想使用 HOC 会降低一些复杂性,从而让您放心。只是一个想法。
标签: javascript node.js reactjs react-native redux