2017-03-17 1 views
0

Ich habe benutzerdefinierte Komponente in meiner reactjs Anwendung:Ist es möglich, von der Realkomponente aus auf die App-Instanz zuzugreifen?

class Word extends React.Component { 
    click() { 
     // can i access app instance here? 
    } 
} 
+0

Können Sie erklären, auf was Sie zugreifen müssen? Vielleicht gibt es einen anderen Weg, um das zu erreichen, was Sie brauchen. –

+0

Ich habe socketio Instanz dort. –

+0

Zeigen Sie uns stattdessen Ihren vollständigen Code für Ihre Komponente. – Chris

Antwort

1

Ihre Frage nicht präzise ist, aber ich nehme an, dass Sie Top-Level-App-Komponente haben, die untergeordneten Komponenten hat, und Sie werden gefragt, ob untergeordnete Komponente App Komponente zugreifen kann.

Wenn das der Fall ist, dann übergeben Sie einfach Verweis auf sie als Stütze:

class App extends React.Component { 

    render() { 
     <Word parent={this} /> 
    } 
} 

class Word extends React.Component { 
    click() { 
     console.log(props.parent); 
    } 
} 

Aber ich glaube, diese anti-Muster zu sein.

+0

Wenn Sie glauben, dass es Anti-Pattern ist, würde ich gerne die Alternative sehen, oder wenn keine benötigt wird, was die alternative Gesamtlösung ist (NB: Ich glaube überhaupt nicht, ich bin nur neugierig auf ein Problem, das auch entstand vor einiger Zeit [mit KnockoutJS] (http://stackoverflow.com/questions/27946789/best-practice-with-multiple-viewmodels/27947889#27947889)). – Tyblitz

+0

Es gibt viele Gründe, warum dies falsch ist, zum Beispiel werden Komponenten stärker gekoppelt, was sie schwieriger zu testen macht. In React sollten Sie alle erforderlichen Daten als Requisiten übergeben. Es ist nicht erforderlich, dass die untergeordnete Komponente von ihrem übergeordneten Element Kenntnis hat. Eine Alternative ist, den Status aufzuheben (mehr in React Docs). – Tomasz

Verwandte Themen