带参数的 Reacjs setInterval 函数

Reacjs setInterval function with argument

提问人:Sanman Chavan 提问时间:7/6/2020 最后编辑:Tim567Sanman Chavan 更新时间:7/6/2020 访问量:53

问:

我有一个函数,可以根据条件设置时间间隔。 假设条件越来越令人满意,那么它应该工作直到它为真,否则它应该停在那里。

class TestClassName extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            //setting values in state
        };
        this.SetIntervalAsPerLogic = this.SetIntervalAsPerLogic.bind(this);
    }
    SetIntervalAsPerLogic = (responseId, model) => {
        if (this.state.isMoreResultsAvailable) {
            this.fetchNewDataDB(responseId, model);
        }
    };

    getDataLazyBind = (responseId, model) => {
        setInterval(function () {
            this.SetIntervalAsPerLogic(responseId, model);
        }, timer);
        setInterval(function () {
            SetIntervalAsPerLogic(responseId, model);
        }, timer);
    };
    render() {
        //rendering
    }
}

const containerElement = document.getElementById("main");
ReactDOM.render(<TestClassName />, containerElement);

错误:未定义 SetIntervalAsPerLogic

JavaScript的 反应JS setinterval

评论


答:

0赞 goto 7/6/2020 #1
  1. 如果您将 inside 类用于您的方法,则无需执行此操作this.setInternalAsPerLogic.bind(this)arrow function expressions
  2. 您需要用于回调arrow function expressionssetInterval
class TestClassName extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      //setting values in state
    };
  }
  SetIntervalAsPerLogic = (responseId, model) => {
    if (this.state.isMoreResultsAvailable) {
      this.fetchNewDataDB(responseId, model);
    }
  };
  getDataLazyBind = (responseId, model) => {
    setInterval(() => {
      this.SetIntervalAsPerLogic(responseId, model);
    }, timer);
  };
  render() {
    // rendering
    return null;
  }
}

来自 MDN:

箭头函数没有自己的 .使用封闭词法范围的值;箭头函数遵循正常变量查找规则。因此,在搜索当前范围中不存在的 which 时,箭头函数最终会从其封闭范围中找到 。thisthisthisthis