2016-07-07 91 views
2

我在角度2中使用ng-redux模塊,我不知道執行異步操作的更好方法是什麼。例如,我需要從服務器獲取一些數據。 我將創建一個返回的功能的動作:我可以使用異步操作的創建者redux-thunk中間件做在角度2中執行redux中的異步操作的推薦方式

export function fetchData() { 
    return function (dispatch) { 
     dispatch({ 
      type: 'FETCH_DATA_REQUEST' 
     }); 
     return fetch(url) 
      .then(response => response.json()) 
      .then(json => dispatch({type: 'FETCH_DATA_SUCCESS', data: json})) 
      .catch(error => dispatch({type: 'FETCH_DATA_ERROR', error: error 
     } 
    } 
} 
dispatch(fetchData()); 

或者我可以做在控制器中的HTTP請求和我將手動執行調度方法:

dispatch({ 
    type: 'FETCH_DATA_REQUEST' 
}); 
http(url).then(data => { 
    dispatch({ 
     type: 'FETCH_DATA_SUCCESS', 
     data: json 
    }); 
}).catch(error => { 
    dispatch({ 
     type: 'FETCH_DATA_ERROR', 
     error: error 
    }); 
}); 

推薦哪種方法?我認爲第二種方法比較容易,但爲什麼會出現重複數據刪除中間件。

回答

1

當然,第一種方法是建議的,特別是如果您使用的是中間件庫。

唯一需要記住的是在ComponentDidMount React生命週期方法內調度您的行爲。