Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我对React中的onChange事件有一个问题_Reactjs - Fatal编程技术网

Reactjs 我对React中的onChange事件有一个问题

Reactjs 我对React中的onChange事件有一个问题,reactjs,Reactjs,有一件事让我困惑,那就是onChange事件。 如下代码所示,onChange事件与handleChange函数一起工作。 让我困惑的是事件参数 class ControlledInput extends React.Component { constructor(props) { super(props); this.state = { input: "empty" }; // change code below this line th

有一件事让我困惑,那就是onChange事件。 如下代码所示,onChange事件与handleChange函数一起工作。 让我困惑的是事件参数

class ControlledInput extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      input: "empty"
    };
    // change code below this line
    this.handleChange = this.handleChange.bind(this);
    // change code above this line
  }
  // change code below this line
  handleChange(event) {
    this.setState({
      input: event.target.value
    })
  }
  // change code above this line
  render() {
    return (
      <div>
        { /* change code below this line */}
      <input type="text" value={this.state.input} onChange={this.handleChange}></input>
        { /* change code above this line */}
        <h4>Controlled Input:</h4>
        <p>{this.state.input}</p>
      </div>
    );
  }
};
类ControlledInput扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
输入:“空”
};
//更改此行下面的代码
this.handleChange=this.handleChange.bind(this);
//更改此行上方的代码
}
//更改此行下面的代码
手变(活动){
这是我的国家({
输入:event.target.value
})
}
//更改此行上方的代码
render(){
返回(
{/*更改此行下方的代码*/}
{/*更改此行上方的代码*/}
受控输入:
{this.state.input}

); } };
  • 是否每个函数都与onChange事件一起工作需要有一个参数。如果答案是肯定的,为什么

  • 我用其他一些关键字替换了关键字“event”,它仍然正常工作。那么,如果我用另一个词而不是“事件”这个关键词,可以吗

  • 是否每个函数都与onChange事件一起工作需要有一个参数。如果答案是肯定的,为什么

    它们不需要使用事件参数,因此您不需要在回调函数中声明该参数,函数将被调用(当然,调用程序仍将传递该参数,但如果不需要,您可以忽略它)。但是,如果您想知道发生了什么变化,那么您可能需要使用事件参数的信息,对吗

    我用其他一些关键字替换了关键字“event”,它仍然正常工作。那么,如果我用另一个词而不是“事件”这个关键词,可以吗

    单词
    event
    是,您可以根据需要命名函数的参数,它仍然可以正常工作,是的

    也许下面的示例将帮助您了解回调如何与JS一起工作

    考虑以下函数。。。它的作用是让您注册一个函数,该函数将每隔一定的毫秒数被调用一次。无论何时调用该函数,您都将收到当前历元时间:

    const timerSubscription = (ms, fn) => {
      const id = setInterval(() => {
        fn(Date.now());
      }, ms);
      return () => clearInterval(id);
    }
    
    所以你可以这样使用它:

    let count = 0;
    const unsubscribe = timerSubscription(1000, () => {
      count++;
      console.log('One second passed');
      if (count === 5) {
        unsubscribe();
      }
    });
    
    let start = Date.now();
    const unsubscribe = timerSubscription(1000, (now) => {
      console.log('One second passed');
      if (now + 5000 >= start) {
        unsubscribe();
      }
    });
    
    或者你可以这样使用它:

    let count = 0;
    const unsubscribe = timerSubscription(1000, () => {
      count++;
      console.log('One second passed');
      if (count === 5) {
        unsubscribe();
      }
    });
    
    let start = Date.now();
    const unsubscribe = timerSubscription(1000, (now) => {
      console.log('One second passed');
      if (now + 5000 >= start) {
        unsubscribe();
      }
    });
    
    它们做的几乎完全相同,一个使用调用程序传递给它的参数,另一个不使用。无论哪种方式,调用程序总是传递参数