在function()中使用setState时,无法读取未定义的属性'setState'

时间:2019-11-08 12:25:40

标签: javascript reactjs

我需要将箭头函数转换为函数。这是由于Slick Slider does not support properly arrow functions的问题。

我已将其转换为

beforeChange={(current, next) => this.setState({slideIndex: next})}

对此:

beforeChange={function(current, next) {
  this.setState({slideIndex: next});
}}

但是不起作用。已经尝试过此解决方案:

beforeChange={function(current, next) {
    this.setState(function() {
        return {slideIndex: next};
    });
}}

1 个答案:

答案 0 :(得分:1)

使用bind将上下文传递给函数:

beforeChange={function(current, next) {
  this.setState({slideIndex: next});
}.bind(this)}

这会将this传递给函数,以便在函数内部引用this时将传递bind

箭头函数自动执行此操作,它们将调用位置的上下文传递给函数本身,因此,通过删除箭头函数,可以删除正确的上下文。

其他允许您手动传递上下文的函数是:applycall和前面提到的bind