2017-11-29 17 views
0

Ich habe eine Komponente reagieren, die eine Funktion aufruft, und ich brauche das injizierte mobx Speicher passieren und die Komponenten Requisiten in diese FunktionPass mobx Laden und Requisiten funktionieren

const Component = inject("store")(observer(({store, props}) => { 
    return (
     <div> 
      {_someRenderFunction(store, props)} 
     </div> 
    ); 
})); 

Es ist in der Funktion wie folgt verwendet werden

function _someRenderFunction(store, props) { 
    let data = store.data; 
    const { cookies } = props; 
    ... 
} 

aber ich habe den Fehler Cannot read property 'cookies' of undefined

Wie kann ich sowohl die Speicher und Komponenten Requisiten zum _someRenderFunction passieren?

Antwort

2

Das Problem ist, diese Zeile:

({store, props}) => {}; 

Ihre Komponente erhält Requisiten nur so die grundlegende Definition wäre:

(props) => {} 

Inject gibt Ihnen Ihr injiziert Speicher innerhalb der gegebenen Requisiten. Also, was Sie erhalten, ist:

const props = { store: STORE_INSTANCE } 

Mit dem Objekt zerstören können Sie Eigenschaften aus Requisiten extrahieren. Also würde das auch funktionieren:

({ store }) => {} 

Hier entpacken Sie den Immobilienladen von Ihren Requisiten. aber in Ihrem Beispiel extrahieren Sie auch Property-Props von Requisiten. Also in Ihrem Fall sollten Requisiten wie aussehen:

const props = { store: STORE_INSTANCE, props: PROPS_OBJECT } 

Dies ist nicht, was Sie wollen. Das Zerstören von Objekten ist in diesem Fall nicht das, was Sie wollen. Der folgende Code sollte funktionieren:

const Component = inject("store")(observer((props) => { 
    return (
     <div> 
      {_someRenderFunction(props)} 
     </div> 
    ); 
})); 

function _someRenderFunction(props) { 
    const { cookies, store } = props; 
    let data = store.data; 
    ... 
} 
Verwandte Themen