【发布时间】:2019-03-20 06:16:11
【问题描述】:
编辑到完整场景:我有两个组件和四个按钮!三个按钮的默认值为null。假设 a、b、c、d 是四个不同的按钮。
- 在第一个组件中,按钮 a 和 b 默认为
null,因此按钮 d 将被禁用。 当用户按下 a 和 b 时,会为 a 和 b 分配一个值>,所以在 a & b 被赋值之后,应该启用 d。
在第二个组件中,按钮 a 和 c 将具有默认值
null,并且当它们都获得值onPressing时,再次按钮 d 将被启用。
请注意,组件是有条件地呈现的,因此用户只能看到一个组件!
这是我的代码:
<Button
disabled={(this.state.quantityItemSelected === null ||
this.state.deliveryOptionSelected === null) &&
(this.state.timeSlotItemSelected === null) ? true : false}
/>
默认常量是this.state.quantityItemSelected === null,两者相同。
它在() 中的条件下工作正常,但关于第一个,当this.state.quantityItemSelected 首先变成不是null 然后this.state.timeSlotItemSelected 变成不是null 它工作正常,
但是当我反转它时,当this.state.timeSlotItemSelected 起初不为空时,条件变为假。
我的预期工作是,当任何东西都是null 时,它应该是真的。
请帮助解决这个问题,让我知道还有什么需要了解的
【问题讨论】:
-
值是否为假,是否始终为
null? -
这太令人困惑了。但是您不需要使用三元运算符。只需使用
&&和||即可满足条件。 -
不,实际上,当用户按下相应的 !因此,两者都有一个相同的常数,因此当该常数和其他条件为空时,当两者都变为非空时,它必须为真,那么它应该为假!
-
你能做一个stackblitz.com 的例子吗?
标签: javascript conditional-statements ternary-operator