2017-08-09 2 views
0

Hey alle (Entschuldigung für noob Frage)!Zugriff auf Daten von Aktionen innerhalb von Komponenten | Redux

Ich möchte meine navbar den Benutzernamen anzeigen, die ich von meiner API bekomme. Und ich kann in meiner Konsole sehen, dass ich die user object mit dem Schlüssel name bekomme.

enter image description here

So frage ich mich, was ist die beste Praxis den Zugang zu den Daten zu bekommen? Hier sind einige Schnipsel von meiner Navbar übrigens!

class MainNavbar extends Component { 
    logout(e) { 
    e.preventDefault() 
    this.props.logout() 
    } 
    render() { 
    return (
     <Navbar inverse collapseOnSelect> 
     <Navbar.Header> 
      <Navbar.Brand> 
      <div> 
       <img id="logo" alt="Qlocx Logo" src={qlocx} /> 
      </div> 
      </Navbar.Brand> 
      <Navbar.Toggle /> 

und unten:

MainNavbar.propTypes = { 
    logout: React.PropTypes.func.isRequired 
    // I guess I need to do something here 
} 

function mapStateToProps(state) { 
    return { 
    auth: state.auth 
    // And here as well, but what? :O 
    } 
} 

export default connect(mapStateToProps, { logout })(MainNavbar) 

Vielen Dank für diese schlechte und nooby Frage zu lesen. Ich schätze all die Hilfe, die ich bekommen kann!

Danke!

+1

@AndyRay das überhaupt nicht wahr. Sicher, keine Antworten zu akzeptieren ist schlecht (bitte akzeptiere die Antworten, die du hilfreich gefunden hast als Checkpoint für zukünftige Leser), aber es wird nicht dazu führen, dass dein Account "geschlossen" wird, was auch immer das bedeutet. – Li357

Antwort

0

Um den Benutzernamen aus der Redux-Zustand in den Requisiten der Komponente abzubilden, müssen Sie zu:

es In den propTypes.

MainNavbar.propTypes = { 
    logout: React.PropTypes.func.isRequired, 
    name: React.PropTypes.string 
} 

Ordnen Sie die neue Stütze aus dem Redux-Zustand zu. Sie müssen prüfen, ob diese korrekt von Ihrem Zustand abbildet

function mapStateToProps(state) { 
    return { 
    auth: state.auth 
    name: state.user.name 
    } 
} 

anzuzeigen Bedingtes den Namen in Ihrer Komponente.

<Navbar.Header> 
    <Navbar.Brand> 
    <div> 
     <img id="logo" alt="Qlocx Logo" src={qlocx} /> 
    </div> 
    </Navbar.Brand> 
    {this.props.name ? this.props.name : null} 
    <Navbar.Toggle /> 
+0

Ja, OP hat nicht den ganzen Redux-Shop gepostet, weshalb ich schrieb: "Du musst überprüfen, ob das korrekt von deinem Zustand abbildet" – DustyKeyboard

+0

Danke für die Antwort des Mannes! Ich mag deinen Namen übrigens, aber das hat den Trick nicht gemacht! :( –

+0

Hallo @Martin haben Sie den Pfad zum Benutzernamen in Ihrem Redux-Shop? Auch, wie Sie Zugriff auf die Prop innerhalb der 'render()' Methode der Komponente? – DustyKeyboard

Verwandte Themen