2016-04-01 13 views
0

私はreduxとNetInfoを使用して、起動時の接続検出と接続が重要な動作を管理しています。起動時に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> 
    ); 
    } 
} 

それが動作していないと状態を更新しない、任意の提案ですか?

答えて

0

私は私の行動のクリエイターにこれを実行する傾向がある。これは古いですが、将来的にはここに到着した人のために、これは私はそれを行っている方法です。

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は前にそれはないですイベントリスナーのチェーンに続いて - > testNetwork - >ディスパッチ結果

関連する問題