Reactjs NetInfo报告在启动和相同操作期间已连接

Reactjs NetInfo报告在启动和相同操作期间已连接,reactjs,react-native,redux,middleware,Reactjs,React Native,Redux,Middleware,我正在使用redux和NetInfo来管理启动期间的连接检测以及连接非常重要的任何操作 import createOneShotMiddleware from 'redux-middleware-oneshot'; import { NetInfo } from 'react-native'; import { checkConnection } from '../actions/networkActions'; export const middleware = createOneShotM

我正在使用redux和NetInfo来管理启动期间的连接检测以及连接非常重要的任何操作

import createOneShotMiddleware from 'redux-middleware-oneshot';
import { NetInfo } from 'react-native';
import { checkConnection } from '../actions/networkActions';

export const middleware = createOneShotMiddleware((dispatch) => {
    const handle = (isConnected) => dispatch(checkConnection(isConnected));
    NetInfo.isConnected.fetch().done(handle);
    NetInfo.isConnected.addEventListener('change', handle);
});
行动

import * as types from './actionTypes';

export function checkConnection(isConnected) {
  return {
    type: types.CHECK_CONNECTION,
    isConnected: isConnected
  };
}
还原剂

import { CHECK_CONNECTION } from '../actions/actionTypes';

const initialState = {
  isConnected: false,
};


export default function network(state = initialState, action = {}) {
    switch (action.type) {
        case CHECK_CONNECTION:
            return Object.assign({}, state, {isConnected: action.isConnected})
        default:
            return state;
    }
}
App.js

import React, { Component } from 'react-native';
import { createStore, applyMiddleware, combineReducers } from 'redux';
import { middleware as netInfo } from './Middleware/redux-middleware-react-native-netinfo';
import { Provider } from 'react-redux';
import thunk from 'redux-thunk';
import createLogger from 'redux-logger'

import * as reducers from './reducers';

import NavigationScreen from './Containers/NavigationScreen';

const logger = createLogger()
const createStoreWithMiddleware = applyMiddleware(thunk, logger, netInfo)(createStore)
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer)

export default class App extends Component {
  render() {
    return (
      <Provider store={store}>
        <NavigationScreen />
      </Provider>
    );
  }
}
import React,{Component}来自“React native”;
从“redux”导入{createStore、applyMiddleware、CombineReducer};
从“./middleware/redux middleware react native netInfo”导入{middleware as netInfo};
从'react redux'导入{Provider};
从“redux thunk”导入thunk;
从“redux logger”导入createLogger
从“./reducers”导入*作为减速机;
从“./Containers/NavigationScreen”导入导航屏幕;
常量记录器=createLogger()
const createStoreWithMiddleware=applyMiddleware(thunk、logger、netInfo)(createStore)
常数减速机=组合减速机(减速机);
const store=createStoreWithMiddleware(reducer)
导出默认类应用程序扩展组件{
render(){
返回(
);
}
}

这不起作用,也不更新状态,有什么建议吗?

这很古老,但对于将来来到这里的任何人来说,这就是我的做法,我倾向于在我的行动创造者身上这样做:

export function networkCheck(){
  return (dispatch) => {
    const dispatchNetworkState = (isConnected) => dispatch({
      type: types.NETWORK_STATE,
      state: isConnected
    })
    const handle = () => NetInfo.isConnected.fetch().done(dispatchNetworkState)
    NetInfo.isConnected.addEventListener('change', handle);
  }
}
前面代码中的isue没有遵循eventlistener->testNetwork->dispatch result的链