javascript - 如何在 React Hooks 中切换复选框值?
问题描述
我有一个输入类型checkbox
如下:
const [is_checked,set_is_checked]= useState(false);
const toggle_payment = () => {
set_is_checked(!is_checked);
console.log(is_checked);
}
return(
<div>
<input checked={is_checked} onChange={toggle_value} type="checkbox"/>
</div>
)
问题
这似乎工作正常,但是当我console.log(is_checked)
看起来它打印以前的值时。我都尝试了onChange
,onClick
但得到了相同的结果。让我感到困惑的是,checkbox
每次单击该框时都会选中/取消选中,但console.log
打印的值与预期打印的值不同,例如当我单击鼠标选中该框时,该框已选中但console.log
打印false
解决方案
使用 useState hook 提供的 updater 进行状态更新是异步的,不会立即反映和更新,而是会触发重新渲染
我认为如果你在函数之外使用 console.log() 你可能会看到 is_checked 的变化
推荐阅读
- node.js - 过于严格的 ES6 linting 设置会导致 VueJS 服务器崩溃吗?
- url - Google 应用程序脚本,onclick 和 href 之间的优先级
- python - 为什么我的数据在图表中间被挤压?
- swift - Swift 5 - 从类到类传递数据的问题
- swift - SwiftUI 列表的性能问题
- bluetooth - 如何在代码视觉中修剪字符串的未知第一个字符
- facebook - 来自 Facebook 的 debug_token 响应不成功:input_token 中的 App_id 与查看应用程序不匹配
- xml - 恢复包含在多个文件中的相对链
- postgresql - 为什么我的烧瓶服务器无法使用 docker-compose 与 postgres 数据库通信?
- c# - 转换 Linq IQueryable
到 Linq IQueryable