React:调用函数,为什么第一个起作用而第二个不起作用?
React: Calling functions, why the first one works and not the second one?
也许这是一个愚蠢的问题,但我想知道为什么会这样...
const isDisabled = () =>
// condition check
这个有效:
<button
type="button"
disabled={this.isDisabled()}
>
Let Me In
</button>
但这不起作用:
<button
type="button"
disabled={this.isDisabled}
>
Let Me In
</button>
因为disabled
需要是一个布尔值:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-disabled
当你添加像this.isDisabled()这样的括号时,函数被执行并且return值被分配给按钮的disabled属性。
当您只是说 disabled = this.isDisabled
时,您只是传递函数的引用,因此不会计算值。
还要记住,按钮上的禁用属性是一个布尔值。因此,请检查您从函数 return 得到的值。
在第一个例子中 this.isDisabled()
你调用函数。
在带有 this.isDisabled
的第二个示例中,您无需调用即可传递函数引用。
试着console.log()
他们两个看看区别。
第二个就像变量一样工作。例如:
var myFunction = this.isDisabled; // I've put the reference to myFunction
myFunction(); // now I've called isDisabled()
也许这是一个愚蠢的问题,但我想知道为什么会这样...
const isDisabled = () =>
// condition check
这个有效:
<button
type="button"
disabled={this.isDisabled()}
>
Let Me In
</button>
但这不起作用:
<button
type="button"
disabled={this.isDisabled}
>
Let Me In
</button>
因为disabled
需要是一个布尔值:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-disabled
当你添加像this.isDisabled()这样的括号时,函数被执行并且return值被分配给按钮的disabled属性。
当您只是说 disabled = this.isDisabled
时,您只是传递函数的引用,因此不会计算值。
还要记住,按钮上的禁用属性是一个布尔值。因此,请检查您从函数 return 得到的值。
在第一个例子中 this.isDisabled()
你调用函数。
在带有 this.isDisabled
的第二个示例中,您无需调用即可传递函数引用。
试着console.log()
他们两个看看区别。
第二个就像变量一样工作。例如:
var myFunction = this.isDisabled; // I've put the reference to myFunction
myFunction(); // now I've called isDisabled()