2017-09-04 1 views
2

In meinem React Component Reducer-Zustand habe ich eine selectedTabIndex -Eigenschaft, die angibt, welche Registerkarte in meiner UI gerade aktiv ist.React - Redux sendet eine Aktion basierend auf dem UI-Status

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

In meiner Redux-Aktion möchte ich einen AJAX-Aufruf basierend auf dem ausgewählten Registerindex vornehmen.

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

Was ist die beste Praxis der Informationen mit dem ReduxActionsBase geben, ohne dass eine anti-Muster Entscheidungsfindung?

Antwort

2

Ich würde vorschlagen, redux-thunk zu verwenden. redux-thunk ermöglicht Ihnen das Senden von bedingten und asynchronen Aktionen und Sie haben Zugriff auf den Redux-Status in Ihrem Aktionsersteller. Aktion Schöpfer in Ihrem Fall wäre so etwas

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

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

Vielen Dank für die Antwort, kann dies ohne eine dritte Partei lib getan werden? Ich arbeite in einer bestimmten Umgebung –

+1

'Redux-Thunk' wird sehr, sehr oft in Redux-Apps verwendet und es ist schwer, Redux-Apps ohne oder ohne etwas Ähnliches zu erstellen, aber wenn Sie keine Libelle von Drittanbietern installieren können schreiben Sie Ihre eigene Redux 'Middleware': http://redux.js.org/docs/advanced/Middleware.html –

+0

redux-thunk ist nur etwa 12 Zeilen lang. Wenn Sie es nicht als NPM-Abhängigkeit hinzufügen können, ist es einfach, es in Ihre Anwendung zu kopieren. – markerikson

Verwandte Themen