为什么在输入时会触发此 onClick 函数?
Why is this onClick function getting triggered when typing on input?
我真的很困惑,因为我正在学习使用钩子并且我正在研究 useState 钩子,当我偶然发现这个时,当我在输入上键入时会触发 onClick 函数。
这是代码:
import React, {useState} from 'react'
function Hooks() {
const [count, setInput] = useState("");
return (
<React.Fragment>
<input value={count} onChange={(e) => {setInput(e.target.value)}}>
</input>
<button className="btn" value="See Input!" onClick={console.log(count)}>
Click here!
</button>
</React.Fragment>
)
}
export default Hooks
当我在输入字段中键入时,计数会被记录下来,我是这样解决的:
import React, {useState} from 'react'
function Hooks() {
const [count, setInput] = useState("");
return (
<React.Fragment>
<input value={count} onChange={(e) => {setInput(e.target.value)}}>
</input>
<button className="btn" value="See Input!" onClick={() => {console.log(count)}}>
Click here!
</button>
</React.Fragment>
)
}
export default Hooks
如您所见,唯一改变的是我没有将onClick事件写成箭头函数,而是只写了一行代码。我会理解这是行不通的,但为什么每当我在输入中写任何东西时都会调用它?
提前致谢!
onClick函数接受一个函数。在第一种情况下,您通过在周围添加括号来调用该函数。当状态更新时 return 被渲染,它在 onCLick 上调用 consol.log()。
在第二种情况下,您已经传递了函数定义并且没有调用它。
当用户点击按钮时调用该函数
我真的很困惑,因为我正在学习使用钩子并且我正在研究 useState 钩子,当我偶然发现这个时,当我在输入上键入时会触发 onClick 函数。
这是代码:
import React, {useState} from 'react'
function Hooks() {
const [count, setInput] = useState("");
return (
<React.Fragment>
<input value={count} onChange={(e) => {setInput(e.target.value)}}>
</input>
<button className="btn" value="See Input!" onClick={console.log(count)}>
Click here!
</button>
</React.Fragment>
)
}
export default Hooks
当我在输入字段中键入时,计数会被记录下来,我是这样解决的:
import React, {useState} from 'react'
function Hooks() {
const [count, setInput] = useState("");
return (
<React.Fragment>
<input value={count} onChange={(e) => {setInput(e.target.value)}}>
</input>
<button className="btn" value="See Input!" onClick={() => {console.log(count)}}>
Click here!
</button>
</React.Fragment>
)
}
export default Hooks
如您所见,唯一改变的是我没有将onClick事件写成箭头函数,而是只写了一行代码。我会理解这是行不通的,但为什么每当我在输入中写任何东西时都会调用它?
提前致谢!
onClick函数接受一个函数。在第一种情况下,您通过在周围添加括号来调用该函数。当状态更新时 return 被渲染,它在 onCLick 上调用 consol.log()。
在第二种情况下,您已经传递了函数定义并且没有调用它。
当用户点击按钮时调用该函数