2016-07-13 10 views
4

Ich habe den Eindruck, dass Methoden, die zu mapDispatchToProps hinzugefügt werden, von this.props zugänglich sein sollten. Wenn ich diese Methoden aufrufen, wird "Uncaught TypeError: this.props.onHighlight ist keine Funktion" ausgelöst. Wer weiß was los ist? Ich habe versucht, eine Reihe von verschiedenen Alternativen für mapDispatchToProps, aber keiner von ihnen funktioniert.React-Redux: mapDispatchToProps-Methoden nicht gefunden

import React from 'react'; 
    import { addHighlight, deleteHighlight, selectHighlight } from 'actions/highlight'; 
    import { connect } from 'react-redux'; 
    import jquery from 'jquery'; 
    import { styles } from './styles.scss'; 

    const mapDispatchToProps = dispatch => { 
     return { 
     onHighlight: (start, end, selectedText) => { 
      dispatch(addHighlight(start, end, selectedText)); 
     }, 
     onDeleteHighlight: (source) => { 
      dispatch(deleteHighlight(source)); 
     }, 
     onSelectHighlight: (source) => { 
      dispatch(selectHighlight(source)); 
     } 
     }; 
    } 

    const mapStateToProps = state => { 
     return { highlights: state.highlights, 
       currentTopic: state.currentTopic, 
       selectedHighlight: state.selectedHighlight,}; 
    } 

    ... 
    Other code about Highlight object 
    ... 

    export default connect(
     mapStateToProps, 
     mapDispatchToProps 
    )(Highlight); 
+3

zwei Dinge zu überprüfen: 1 - Stellen Sie sicher, dass Sie die angeschlossene Version Ihrer Komponente verwenden statt versehentlich die unverbundene Version. 2 - stellen Sie sicher, dass 'das' tatsächlich Ihre Komponenteninstanz ist. Stellen Sie sicher, dass Sie keinen Event-Handler aufrufen, für den 'this' nicht gebunden ist. Es ist schwer, mehr zu sagen, es sei denn, Sie einige Ihrer Komponente veröffentlichen und wie Sie versuchen, OnHighlight aufzurufen – Brandon

Antwort

0

Versuchen bindActionCreators mit:

import { bindActionCreators } from 'redux' 

const mapDispatchToProps = dispatch => { 
     return bindActionCreators({ 
     onHighlight: addHighlight, 
     onDeleteHighlight: deleteHighlight, 
     onSelectHighlight: selectHighlight 
     }, dispatch); 
    }