在componentDidMount中不起作用的操作

时间:2017-01-25 14:37:42

标签: javascript reactjs react-redux video.js rangeslider

我在我的应用程序中使用react-redux。我有一个播放器,我使用rangeliderplugin为videojs。我有一个actioncreater,当我在视频时间轴中滑动滑块时应该触发它。 https://github.com/danielcebrian/rangeslider-videojs为此提供了一个插件。我想通过此事件函数将值传递给我的操作。这是我的代码

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

1 个答案:

答案 0 :(得分: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);
});