Reactjs NetInfo报告在启动和相同操作期间已连接
我正在使用redux和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
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的链