Javascript 无法读取属性';设置状态';在函数()中使用setState时的未定义值
我需要把一个箭头函数转换成一个函数。这是由于光滑滑块的问题,因为它是 我已将此转换为:Javascript 无法读取属性';设置状态';在函数()中使用setState时的未定义值,javascript,reactjs,Javascript,Reactjs,我需要把一个箭头函数转换成一个函数。这是由于光滑滑块的问题,因为它是 我已将此转换为: beforeChange={(current, next) => this.setState({slideIndex: next})} 为此: beforeChange={function(current, next) { this.setState({slideIndex: next}); }} 但是不起作用。已尝试此解决方案: beforeChange={function(current,
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};
});
}}
使用
bind
将上下文传递给函数:
beforeChange={function(current, next) {
this.setState({slideIndex: next});
}.bind(this)}
这将把这个
传递给函数,这样当引用这个
时,函数中的这个将是通过绑定
传递的
箭头函数会自动执行此操作,它们会将调用它们的位置的上下文传递给函数本身,因此通过删除箭头函数,可以删除正确的上下文
允许您手动传递上下文的其他函数有:,以及前面提到的。因为
这个范围是错误的。使用箭头函数(=>
)时,此
保留,但使用函数(){}
时,此
有自己的作用域,因此此.setState()
将不起作用,除非您使用绑定函数。
绑定(此)
“这是由于滑动条有问题…”否,IE及其缺少的支撑是问题所在,而不是光滑的滑块。