2016-09-28 3 views
0
in componentDidMount definiert

Ich bin hier bei der Asynchron-redux Beispiel suchen:der Versand nicht

https://github.com/reactjs/redux/blob/master/examples/async/src/containers/App.js

Wenn ich folgendes hinzufügen:

function mapDispatchToProps(dispatch) { 
    return {}; 
} 

export default connect(mapStateToProps,mapDispatchToProps)(App) 

Dann Versand nicht mehr definiert in componentDidMount. Warum ist das? Wie kann ich bei der Verwendung von mapDispatchToProps auf den Versand zugreifen?

Antwort

2

Wenn ich Sie richtig verstehe, möchten Sie den Versand von der KomponenteDidMount als eine Funktion in this.props aufrufen (was ich nicht empfehlen, überprüfen Sie, wie redux funktioniert und erstellen Sie die Aktion Ersteller, die Sie benötigen). Trotzdem können Sie Folgendes erreichen:

function mapDispatchToProps(dispatch) { 
    return { dispatch }; 
} 

Das erstellt eine Versandeigenschaft, die die Versandfunktion selbst ist. Machen Sie das noch nicht in einem echten Anwendungsfall und lesen Sie weiter über redux action.creators.

1

dem gegebenen Beispiel folgend, übergeben Sie mapDispatchToProps-connect wie diese

function mapDispatchToProps(dispatch) { 
    return { 
    onClick: nextReddit => { 
     dispatch(selectReddit(nextReddit)); 
    } 
    }; 
} 

export default connect(mapStateToProps, mapDispatchToProps)(App) 

Komponente App wird dann mit einer Stütze onClick ermächtigt werden, die wie unten verwendet wird.

handleChange = nextReddit => { 
    this.props.onClick(nextReddit) 
} 

render() { 
    ... 
    return (
    ... 
    <Picker value={selectedReddit} 
      onChange={this.handleChange} 
      options={[ 'reactjs', 'frontend' ]} /> 
    ... 
); 
}