2016-07-13 1 views
4

map.DispatchToProps에 추가 된 메소드는 this.props에서 액세스 할 수 있어야한다는 내 인상입니다. 이러한 메서드를 호출하면 "Uncaught TypeError : this.props.onHighlight가 함수가 아닙니다."라는 메시지가 발생합니다. 아무도 모르는 일이 있습니까? mapDispatchToProps에 대해 여러 대안을 시도했지만 그 중 어느 것도 작동하지 않습니다.React-Redux : mapDispatchToProps 메소드를 찾을 수 없음

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

두 가지 확인 : 1 - 당신은 당신의 구성 요소의 연결 버전을 사용하는 대신에 실수로 연결되지 않은 버전을 사용하고 있는지 확인합니다. 2 -'this'가 실제로 컴포넌트 인스턴스인지 확인하십시오. 'this' 언 바운드를 사용하여 이벤트 핸들러를 호출하지 않도록하십시오. 당신이 당신의 구성 요소의 일부를 게시하고 어떻게 당신이'onHighlight'를 호출하려고하지 않는 한 더 말하기는 어렵습니다. – Brandon

답변

0

bindActionCreators를 사용해보십시오 :

import { bindActionCreators } from 'redux' 

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