2016-04-05 6 views
1

Mit redux versuche ich eine "Hilfsfunktion" in meinem redux-Modul zu schreiben, die gefilterte Daten aus dem Zustand zurückgibt, basierend darauf, welchen Index ich passiere. Diese Daten werden verwendet, um basierend auf auth: true oder budt: true eine Form von Eingaben aufzubauen. Das Formular würde im Grunde über alleTypen für diese Ebene iterieren und die Auth- oder Budt-Eingaben bedingt anzeigen/verbergen.Wie kann ich eine Hilfstyp-Funktion in meinem Redux-Modul erstellen, um eine gefilterte Menge von Readonly-Daten aus dem Status zurückzugeben?

der Zustand gegeben ...

totypesmap: [ 
    { 
     level:1, 
     totypes:[ 
     {ttno:1, ttcode:'', ttdesc:'regular', auth:true, budt:false}, 
     ] 
    } 
    ] 

Ich habe eine Funktion in meinem Modul exportiert, die ein index Argument erwartet und gibt seinen entsprechenden totypesmap[index] vom Zustand. Um jedoch von innen heraus zu kommen, muss ich getState() verwenden, was erwartet, dass eine Zusage mit den von mir angenommenen Daten aufgelöst wird.

Sollte ich dies auf eine andere Weise erreichen?

export const MyTOTypes = (level) => { 
    return (dispatch, getState) => { 
    const state = getState() 
    // return state.masterdata.totypesmap[level].totypes 
    } 
} 

In meinem Behälter oder Komponente ich einfach import { MyTOTypes } from 'redux/modules/masterdata' und dann nennen, wenn ich die TO-Typen wissen müssen zugewiesen mein „Level“ MyTOTypes(0)

Antwort

1

Wenn die Daten konstant ist, tun Sie es nicht in der Redux-Laden. Legen Sie es einfach in ein Modul und legen Sie Ihre Hilfsmethoden offen, um die Daten abzurufen.

const totypesmap = [ ... ]; 
export function MyToTypes(level) { return totypesmap[level].totypes; } 

Wenn Sie es wirklich in der Redux speichern wollen, dann müssen Sie Ihre Methode state als erstes Argument. Ihre Reagieren Komponenten werden dem Aufruf dieser Methode innerhalb ihrer mapStateToProps Methode und den Speicher Status verfügbar haben:

export function MyToTypes(state, level) { return state.totypesmap[level].totypes; } 
+0

der Stammdaten ist nicht wirklich konstant betrachtet, als aus dem Backend auf componentDidMount gezogen und geschoben in den Laden. Ich muss im Grunde eine Funktion schreiben, die die totypesmap genau auf die Ebene filtert, die ich möchte. Ich könnte eine Funktion in jedem Container schreiben, aber das ist repetitiv. Die Idee besteht darin, diese Funktion überall verwenden zu können und nicht den Status übergeben zu müssen. – gorelative

+1

dann haben Sie Ihre Hilfsfunktion nehmen 'state' als das erste Argument und lassen Sie Ihre Komponenten die Hilfsfunktion aus der' mapStateToProps' Methode von 'connect' aufrufen. – Brandon

Verwandte Themen