React Native三元运算符多条件控制按钮禁用状态失效问题求助
问题核心错误点
- 逻辑非运算符优先级错误:
!props.zkub == " "的实际执行逻辑是(!props.zkub) == " ",和你想要判断的「zkub不等于空格」完全不符,JS中!优先级远高于==,判断不等请直接用!==,推荐全程用严格相等===/!==避免隐式类型转换问题。 - 逻辑表达式本身恒成立:你写的
!props.zkub == " " || !props.zkub == "B"不管zkub取什么值都会返回true。根据德摩根定律,要判断「zkub既不是空格也不是B」,需要用&&而不是||,正确写法是props.zkub !== " " && props.zkub !== "B"。 - disabled属性传值错误:React Native的
disabled属性接受布尔值,你写的disabled={() => checkDisableButton()}是把函数本身传给了属性,函数转布尔值恒为true,会导致按钮永远禁用。
正确实现
首先明确你的需求逻辑:仅当props.isAllowedState为false且props.zkub为空格或B时,按钮需要禁用,其余所有情况按钮都启用。
你不需要嵌套三元或者多分支if,直接返回逻辑表达式结果即可:
const checkDisableButton = () => { return !props.isAllowedState && (props.zkub === " " || props.zkub === "B"); };
调用时直接传入函数返回值即可:
disabled={checkDisableButton()}
如果要直接写在行内,连函数都不需要,直接传入表达式:
disabled={!props.isAllowedState && (props.zkub === " " || props.zkub === "B")}
内容的提问来源于stack exchange,提问作者yesIamFaded
相关产品推荐
相关产品推荐

