2017-04-02 5 views
0

Ich habe zwei Komponenten ist eine App-Komponente und andere Sidebar-Komponente Ich habe Eingabefeld in Seitenleiste verwendet, und ich möchte den Wert dieses Eingabefeldes in meiner App-Komponente auf klicken Wie könnte das möglich sein?Holen Sie sich eine andere Komponente Eingabewert Reagieren js

+0

auf klicken im Textfeld oder wenn auf AppComponent geklickt? – mfahadi

+0

ist die Sidebar Kind der App-Komponente? –

+0

Ich habe kleines Formular in Sidebar-Komponente möchte den Wert des Eingabefeldes, das in dieser Form in der App-Komponente auf Click-Ereignis ist, und ich möchte nicht auf Änderungsereignis verwenden –

Antwort

0

In reinen reagiert es möglich ist, durch Rückruf von einer Komponente hinzufügen und es in übergeordneter Komponente verwenden, um ihren Zustand zu ändern und dann Eingabewert von Eltern Zustand zu Requisiten Ihrer zweiten Komponente

+1

Haben Sie ein Beispiel ? . Ich habe die leichte andere Weise definiert Function in App-Komponente und ausgelöste Sidebar-Komponente in App-Komponente konnte ich dies über refs oder documetn.getelment von ID durch Put ID auf das Eingabefeld im Eingabefeld, das in Sidebar-Komponente –

+0

Blick ist nächste Antwort, hier ist es – AlexeyKuznetsov

0

Sie können versuchen, lifting the state up senden.

Erstellen Sie eine neue Komponente, die Ihre zwei Komponenten enthält. Erstellen Sie in dieser neuen Komponente eine Funktion, die Sie innerhalb der Sidebar-Komponente als props übergeben.

class ContainerComponent extends React.Component { 
    constructor() { 
     super(); 
     this.state = { 
      valueThatNeedsToBeShared: '' 
     } 
    } 

    handleChange(e) { 
     this.setState({valueThatNeedsToBeShared: e.target.value}) 
    } 

    render() { 
     return (
      <div> 
       <AppComponent value={this.state.valueThatNeedsToBeShared} /> 
       <SidebarComponent handleChange={this.handleClick.bind(this)} value={this.state.valueThatNeedsToBeShared} /> 
      </div> 
     ) 
    } 
} 

const SidebarComponent = ({handleChange, value}) => <aside> 
    <input value={value} onChange={handleChange} /> 
</aside> 

const AppComponent = ({value}) => <div> 
    value from sidebar: {value} 
</div> 
+0

Ich möchte nicht onchange-Ereignis auf Eingabefeld verwenden –

+0

Bitte erklären, warum? – AlexeyKuznetsov

+0

Arbeitete Arbeit mich ... Was, wenn ich Daten von mehreren Feldern wie Benutzername/Passwort erhalten möchte? – Omer

Verwandte Themen