无法读取未定义的React.js的属性“绑定”

时间:2018-07-09 10:31:03

标签: javascript reactjs

将其绑定到我的addTimes函数时,出现错误提示:无法读取未定义的属性“ bind”。

我正在使用ReactjJS和Webpack进行构建。 最近我又遇到了另一个人建议的问题:

this.addTimes = this.addTimes.bind(this);

请参阅:Cannot read property 'setState' of undefined ReactJS

class Settings extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      times: []
    };

  }
  render(){
    this.addTimes = this.addTimes.bind(this);
    Array.prototype.remove = function() {
        var what, a = arguments, L = a.length, ax;
        while (L && this.length) {
            what = a[--L];
            while ((ax = this.indexOf(what)) !== -1) {
                this.splice(ax, 1);
            }
        }
        return this;
    };

    var currentTicked = [];
    var times =[]
    function addTimes(id){
      var index = times.indexOf(id);
      if (!times.includes(id)) {
        $("input:checkbox[name=time]:checked").each(function(){
          currentTicked.push($(this).val());
          times = times.concat(currentTicked)
          times = jQuery.unique(times);
          currentTicked = [];

        });
      } else if(times.includes(id)){
        times = times.remove(id);
      }
      console.log(times);
      this.setState = {
        thims: times
      }
    }

1 个答案:

答案 0 :(得分:2)

为了能够在构造函数中将addTimes绑定到thisaddTimes必须是您类上的一个方法,而不仅仅是render方法中的一个函数。

class Settings extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      times: []
    };
    this.addTimes = this.addTimes.bind(this);
  }

  addTimes(id) {
    // ...
  }
}

如果要在render方法中创建addTimes,可以将this绑定到该函数:

function addTimes(id) {
 // ...
}.bind(this);

或者您也可以将其设置为箭头功能:

const addTimes = (id) => {
  // ...
}