reactjs - 你如何根据 React 中的点击来改变状态?
问题描述
如何根据用户操作(如 onClick)做一个简单的 useState 钩子?在下面的示例代码段中,setCount
不允许出现在函数内部,并且违反了Hooks 规则,导致:
错误:Invalid hook call. Hooks can only be called inside of the body of a function component.
const [count, setCount] = React.useState(0);
function Btn () {
const myClickHandler = (c)=>{
setCount(c+1);// <- WHOOPS!! This violates rules of hooks! Hook can't be in a click handler.
};
return (
<button onClick={()=>myClickHandler(count)}>
You've clicked {count} times.
</button>
);
};
解决方案
对 useState ( setCount(c+1)
) 的调用实际上是正确的。
钩子声明(const [count, setCount] = React.useState(0)
)在函数的外面和上面,这是错误的地方。将它移到函数内部,一切都会正常工作。
推荐阅读
- kubernetes - JupyterHub setup- CrashLoopBackOff 中的 Kubernetes hub pod
- javascript - 如何在反应中使用axios(post)
- xcode - NSWindow 中的 NSToolbar 无法正确显示
- php - 未显示警告或通知
- c++ - LibSSH:在会话中与脚本/bash 交互
- scala - 如何在scala中将数组转换为字符串
- postgresql - 如何更新 dockerized postgresql 数据库中的模式?
- r - 匹配文本中的确切单词列表
- excel - 如何解决导出 excel laravel 中的“函数 App\Exports\ItemsExport::__construct(), 0 传递的参数太少”?
- json - Jackson 将 XML 属性转换为平面 JSON