2017-09-04 41 views
2

在我的React組件reducer狀態中,我有一個selectedTabIndex屬性,指定在我的UI中當前有哪些選項卡處於活動狀態。React - Redux根據UI狀態調度一個動作

const deviceRankReducer = (state = { 
    selectedIndex:1 
},action) ={ 
    //... 
} 

在我的Redux操作中,我想根據所選標籤索引進行AJAX調用。

class MyActions extends ReduxActionsBase { 
    sendRequest(){ 
      if(state.selectedIndex === 0){ 
      //make call to resource A 
      }else{ 
      //make call to resource B 
      } 
    } 
} 

什麼是分享與ReduxActionsBase信息未做反模式決定最佳做法?

回答

2

我建議使用redux-thunkredux-thunk允許您發送條件和異步操作,並且您將有權訪問動作創建者內部的Redux狀態。在你的情況動作的創造者會是這樣的

function makeRequest() { 
    return (dispatch, getState) => { 
    const { selectedIndex } = getState(); 

    if(state.selectedIndex === 0){ 
     //make call to resource A 
    }else{ 
     //make call to resource B 
    } 
    }; 
} 
+0

感謝您的答覆,這可以做到這一點,而無需添加第三方庫?我正在給定的環境中工作 –

+1

'redux-thunk'在redux應用程序中非常常用,它很難在沒有它或沒有類似的情況下創建redux應用程序,但是如果你不能安裝任何第三方庫,你會必須編寫自己的Redux'中間件':http://redux.js.org/docs/advanced/Middleware.html –

+0

redux-thunk只有大約12行。如果您不能將其作爲NPM依賴項添加,則將其複製粘貼到您的應用程序中並不重要。 – markerikson

相關問題