2017-09-25 4 views
1

Ich versuche, einen Suchfilter in meiner Anwendung zu implementieren, die react/redux mit redux-search verwendet. Der erste Fehler, den ich bekomme, ist, wenn ich versuche, den Store Enhancer wie im Beispiel hinzuzufügen.So implementieren Sie die Redux-Suche

// Compose :reduxSearch with other store enhancers 
 
const enhancer = compose(
 
    applyMiddleware(...yourMiddleware), 
 
    reduxSearch({ 
 
    // Configure redux-search by telling it which resources to index for searching 
 
    resourceIndexes: { 
 
     // In this example Books will be searchable by :title and :author 
 
     books: ['author', 'title'] 
 
    }, 
 
    // This selector is responsible for returning each collection of searchable resources 
 
    resourceSelector: (resourceName, state) => { 
 
     // In our example, all resources are stored in the state under a :resources Map 
 
     // For example "books" are stored under state.resources.books 
 
     return state.resources.get(resourceName) 
 
    } 
 
    }) 
 
)

Ich verstehe evarything zum resourceSelector up, wenn ich einen tiefen Einblick in das Beispiel zu bekommen versucht, um zu sehen, wie es funktioniert, aber ich kann kaum sehen, wie sie erzeugt werden, und die letzte Zeile ein Fehler zurückgibt, Kann nicht Eigentum ‚get‘ undefinierter

Mein Zustand Objekt sieht wie folgt aus

lesen

Jede Hilfe von jedem, der Redux-Suche versteht, ist hilfreich

Antwort

1

Wenn diese Zeile:

return state.resources.get(resourceName) 

verursacht diesen Fehler:

Cannot read property 'get' of undefined

Das zeigt an, dass state.resources ist nicht definiert. Und tatsächlich definiert Ihr Zustand kein resources Attribut.

Die Beispiele wurden mit der Idee im Kopf geschrieben redux-search viele Arten von Ressourcen zu Index, zB:

state: { 
    resources: { 
    books: [...], 
    authors: [...], 
    // etc 
    } 
} 

Die Lösung für das Problem, das Sie wäre berichtet haben entweder:

  • A: Fügen Sie einen Vermittler resources Objekt hinzu (wenn Sie denken, dass Sie andere Dinge in der Zukunft indizieren möchten und Sie diese Organisation mögen).
  • B: Ersetzen Sie state.resources.get(resourceName) durch state[resourceName] oder ähnlich.
+0

Danke, Du eine große Bibliothek haben, aber nur sehr wenige Menschen es – Craques

+0

Leider @brianvaughn verstehen, wenn ich als unhöflich, seine seit über 2 Wochen versuchen, dies zu implementieren, ein bisschen frustrierend für mich abging, ich weiß, die Bibliothek ist gut Deshalb versuche ich es zu verstehen. – Craques

+0

Es ist in Ordnung. Ich bin auch in solchen Situationen frustriert. Ich verstehe. – brianvaughn

Verwandte Themen