首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确地反转布尔值!运算符

如何正确地反转布尔值!运算符
EN

Stack Overflow用户
提问于 2021-06-01 07:08:42
回答 2查看 195关注 0票数 2

我正在使用资料UI,并第一次作出反应,做一个练习,我不能启用一个按钮,一旦点击后,第二次被禁用。

以下是代码:

代码语言:javascript
运行
复制
const [hello, setHello] = useState(true)
  <Button variant='contained' color='primary' disabled={hello ? false : true} onClick={() => setHello(!hello)}>
    Click Me
  </Button>

当页面启动时,按钮将被启用。

当我第一次点击它时,它就被禁用了。

问题是,当再次单击时,它将保持禁用状态。setHello(! hello )不应该将hello转换为与其相反的布尔值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-01 07:10:22

在React状态更新中切换布尔值的正确方法是使用功能状态更新。

代码语言:javascript
运行
复制
onClick={() => setHello(hello => !hello)}

该按钮的禁用属性还可以使用少量应用的布尔Zen,因为hello状态已经是一个布尔值,因此不需要使用三元操作符来分配布尔值。

代码语言:javascript
运行
复制
disabled={!hello}

但是,更大的问题是在禁用按钮之后,它现在不再可点击了,所以您需要一些其他方法来切换hello状态,以便重新启用按钮。

票数 3
EN

Stack Overflow用户

发布于 2021-06-01 07:11:03

尝尝这个。

代码语言:javascript
运行
复制
const [hello, setHello] = useState(true)
<Button variant='contained' color='primary' disabled={!hello} onClick={() => setHello(hello => !hello)}>
    Click Me
</Button>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67784190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档