了解this.function()和this.function之间的区别

时间:2019-06-21 03:02:36

标签: reactjs redux react-redux

嗨,我一直在阅读React和做一些编码,我不禁注意到,在代码的某些部分中,我们将使用this.function(),而在某些部分中,我们将使用{{1} },我不明白它们之间有什么区别,以及如何确定何时应该用this.function打电话以及何时不应该打电话。

例如,我可以使用下面的代码来使用()

this.function

接下来,我可以输入以下代码

//Arrow function used to bind the necessary variables
CallFunction = (event) =>{ 
   console.log("Event was called");
}

render(){
   return(
      <form onSubmit={this.CallFunction} />
   );
}

1 个答案:

答案 0 :(得分:2)

这只是普通的javascript,它是执行函数和引用函数之间的区别。如果您有括号,则该函数将在渲染后立即执行。因此,在第二个示例中,安装该组件后,您会立即在控制台中看到“事件已调用”。我们可能必须这样做的原因有很多,一个简单的原因就是我们只想将我们的一些代码分解为一个新函数,以使事情更易于阅读。

对于回调,我们不想立即执行该函数,因此我们不使用括号。我们只是引用函数。我们基本上是说这是我希望您在有人提交此表单时执行的功能。如果我们使用parens,则该函数将在组件安装时立即执行-无需等到提交表单后即可。

edit:有时您需要在渲染上执行一个函数,然后返回要执行的 new 函数作为事件处理程序回调:

function thisRunsOnRender () {
  return function thisRunsOnSubmit (e) {
    console.log(e) // this would be the submit event
  }
}

....

render () (
  <form onSubmit={thisRunsOnRender()} />
)