javascript - 在 slider 事件状态上设置状态不是函数错误

标签 javascript reactjs setstate

我试图在更新 slider 时更改状态。 不知怎的,setState is not a function出现错误:

“类型错误:this.setState 不是一个函数”

我是 react 新手,我可能还没有意识到如何使用状态。

var ReactDOM = require('react-dom');
var React = require('react');
var SliderComponent = require('rc-slider');

class Slider extends React.Component {
constructor(props) {
    super(props);
    console.log("SLIDER");
    console.log(props);
    this.state = {
        value: 50,
    };

}
onSliderChange(value){
    console.log(value);
    this.setState({
        value: value
    });
}
render() {
    return (<div> SLider
        <SliderComponent value={this.state.value} tipTransitionName="rc-slider-tooltip-zoom-down" onChange={this.onSliderChange} />
    </div>)
}
}

module.exports = Slider;

最佳答案

您需要将this绑定(bind)到onSliderChange函数。

<SliderComponent value={this.state.value} tipTransitionName="rc-slider-tooltip-zoom-down" onChange={this.onSliderChange.bind(this)} />

您也可以在构造函数中执行此操作。

constructor(props) {
    super(props);
    console.log("SLIDER");
    console.log(props);
    this.state = {
        value: 50,
    };
    this.onSliderChange = this.onSliderChange.bind(this)
}

还有很多其他方法可以做到这一点。

https://medium.com/@housecor/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56

关于javascript - 在 slider 事件状态上设置状态不是函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43801075/

相关文章:

javascript - 节流函数(受 lodash 启发)仅使用 React Hook (使用 Sandbox)来处理调整大小事件

javascript - 为什么当我尝试在 PHP 中运行此 JS 代码时没有任何反应?

dart - Flutter:setState() 中的代码是否重要?

javascript - 弹出窗口与同一域的另一个窗口之间的跨窗口js交互

javascript - 如何扩展 Javascript 库以每次使用相同的配置

javascript - 如何将函数放在 return 之外,然后从 onChange react 中调用它?

javascript - 设置开始时的状态

javascript - 运行迁移时 Sequelize 已弃用错误消息

javascript - 使用 setTimeout 与比较更新循环上的时间戳

javascript - 单击标题时动态展开/折叠