2017-01-25 8 views
0

Я использую реакцию-редукцию в своем приложении. У меня есть плеер, и я использовал rangeliderplugin для videojs. У меня есть actioncreater, который должен срабатывать, когда я сдвигаю ползунок на временной шкале видео. Для этого есть плагин для https://github.com/danielcebrian/rangeslider-videojs. Я хочу передать значение для моего действия из этой функции события. Вот мой коддействия, не работающие внутри компонентаDidMount

newMarkerTime мое действие

class PlayerLogic extends Component { 
    constructor() { 
     super(); 
     this.state = { 
      player: {} 
     }; 
    } 

    componentDidMount() { 
     var self = this; 
     var options ={hidden:false}; 
     var player = videojs(this.refs.video, this.props.options).ready(function() { 
      self.player = this; 
      self.player.on('play', self.handlePlay); 
     }); 
     player.rangeslider(options); 
     player.on("sliderchange",function() { 
      values = player.getValueSlider(); 
      this.props.newMarkerTime(values); 
     }); 

Это дает в ошибки, как это, когда я сдвиньте ползунок.

enter image description here

ответ

2

Вы должны использовать жирную стрелку здесь, или использовать self которые вы объявили выше

player.on("sliderchange",function() { 
    values = player.getValueSlider(); 
    // this refers to player 
    this.props.newMarkerTime(values); 
    // self refers to your component 
    self.props.newMarkerTime(values); 
}); 

// use a fat arrow instead 
player.on("sliderchange",() => { 
    values = player.getValueSlider(); 
    // this refers to your react component 
    this.props.newMarkerTime(values); 
}); 
+0

Worked. Не могли бы вы объяснить, в чем заключается логика использования функции стрелок здесь? – ApurvG

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions –