2017-10-27 5 views
3

Ich bin nicht sicher, ob dies der richtige Weg ist, um mein Problem zu lösen, also bin ich offen für andere Methoden.Erhalte die Eigenschaften der Elternkomponente beim Klicken auf die Kindkomponente

Wenn ich auf eine untergeordnete Komponente (Image) klicke, möchte ich auf die Eigenschaften der übergeordneten Komponente zugreifen können. Hier ist mein Code so weit:

geordnete Komponente

import {Image, Grid, Row, Col} from 'react-bootstrap'; 
import React, { Component } from 'react'; 
import localForage from 'localforage'; 
import Activity from './activity'; 


testClick(e){ 
    console.log("click handled", e.target.getAttribute('value')); 
} 

render() { 
    return (
     <Grid> 
      <Row> 
       <Col sm={4} smPush={4}> 
        <h2 className="center-header">Explore Ibiza</h2> 
       </Col> 
      </Row> 
      <Row /> 
       <Activity handleClick={(e)=>{this.testClick(e)}} description="Dining" imageSource="https://lonelyplanetimages.imgix.net/mastheads/95971965.jpg?sharp=10&vib=20&w=1200" /> 
       <Activity description="Diving" imageSource="https://media-cdn.tripadvisor.com/media/photo-s/06/8d/1f/6a/linda-playa.jpg"/> 
       <Activity onClick={this.handleClick} description="Boating" imageSource="https://lvs.luxury/wp-content/uploads/2015/06/1.jpg"/> 
      <Row /> 
     </Grid> 
    ) 
} 

Kinder Komponente

return(
<Col sm={4}> 
    <p>{props.description}</p> 
    <Image onClick={props.handleClick} value={props.description} src={props.imageSource}className="activity-image margin-bottom-5"/> 
</Col> 

)

Erklärung

Ich bin derzeit in der Lage, den Wert zu erhalten, aber wenn, wenn ich die description Eigenschaft des übergeordneten Elements auch erhalten möchte?

Antwort

0

Ich bin mir nicht sicher, ob ich Sie richtig verstanden habe, aber ich denke, dass Sie nur einen zusätzlichen Parameter an den Callback/Handler des Elternteils übergeben müssen.

Vielleicht helfen so etwas wie dieses kann:

<Image onClick={e => this.props.handleClick(e, props.description)} ... 
+0

Ja, Sie auf dem richtigen Weg waren. Wird mit meiner Lösung aktualisiert! –

+0

@AustinWrenn Während es viele Diskussionen darüber gibt, welcher Teil des Code eines anderen Benutzers für die Bearbeitung akzeptabel ist, sollten Sie im Allgemeinen einen * Kommentar * posten, der die Änderung des Codes vorschlägt und das OP die Bearbeitung vornehmen lässt. Die klaren Ausnahmen sind Code-Einrückungen/Formatierungen (außer für Sprachen wie Python, bei denen Einrückungen in die Sprache integriert sind), Tippfehler/Schreibfehler in Kommentaren und möglicherweise Tippfehler in gedruckten Strings. Jede andere Änderung birgt das Risiko, Code zu brechen, die Absicht des Autors zu ändern oder das Fehlerintegral versehentlich auf eine Frage zu fixieren ... – robinCTS

+0

@AustinWrenn Ich habe die Antwort bearbeitet, um zu zeigen, welche anderen Arten von Änderungen akzeptabel sind. Vergiss auch nicht, eine der Antworten zu akzeptieren, wenn sie das Problem löst, und verbessere alle Antworten, die nützlich waren. – robinCTS

Verwandte Themen