三元运算符中的条件不工作
and condition in ternary operator not working
我正在尝试将 MUI 构建的自定义按钮添加到我的项目中。如果 2 个对象不为空,我想启用我的按钮,否则按钮将保持禁用状态。我编写的代码只能正确运行一半。
我只想在满足 2 个条件时启用我的按钮。但只有当一个条件满足条件时,按钮才会启用。三元运算不接受 && 条件。
我该如何解决这个问题?
{Object.keys(userSelectDevicename).length === 0 && Object.keys(userSelectDevicecategory).length === 0 ? (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={bool}>
Add
</WsButton>
</>
) : (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={!bool}>
Add
</WsButton>
</>
)};
在小括号内添加两个条件。 &&
首先作为条件运算符工作,只有当 Object.keys(userSelectDevicename).length === 0
为真时才会首先检查它。它将运行下半场。那是来自 Object.keys(userSelectDevicecategory).length === 0) ? ....
的代码
加上括号时括号的优先级会更高,条件会被作为一个整体来评估,然后三元运算符会根据条件的结果开始。
{(Object.keys(userSelectDevicename).length === 0 && Object.keys(userSelectDevicecategory).length === 0) ? (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={bool}>
Add
</WsButton>
</>
) : (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={!bool}>
Add
</WsButton>
</>
)}
您在每种情况下都有两个相同的 JSX。变化因子为 disabled={!bool}
。您可以为此使用三元运算符,但我会做一些不同的事情,如下所示。使代码更简洁。这是创建一个函数,该函数 returns 禁用按钮的布尔状态。
export default function YourComponent(){
function getBool(){
let lengthOne = Object.keys(userSelectDevicename).length
let lenghtTwo = Object.keys(userSelectDevicecategory).length
if(lengthOne === 0 && lengthTwo === 0) return true
else return false
}
return(
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={!getBool()}>
Add
</WsButton>
</>
)
}
我正在尝试将 MUI 构建的自定义按钮添加到我的项目中。如果 2 个对象不为空,我想启用我的按钮,否则按钮将保持禁用状态。我编写的代码只能正确运行一半。
我只想在满足 2 个条件时启用我的按钮。但只有当一个条件满足条件时,按钮才会启用。三元运算不接受 && 条件。
我该如何解决这个问题?
{Object.keys(userSelectDevicename).length === 0 && Object.keys(userSelectDevicecategory).length === 0 ? (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={bool}>
Add
</WsButton>
</>
) : (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={!bool}>
Add
</WsButton>
</>
)};
在小括号内添加两个条件。 &&
首先作为条件运算符工作,只有当 Object.keys(userSelectDevicename).length === 0
为真时才会首先检查它。它将运行下半场。那是来自 Object.keys(userSelectDevicecategory).length === 0) ? ....
加上括号时括号的优先级会更高,条件会被作为一个整体来评估,然后三元运算符会根据条件的结果开始。
{(Object.keys(userSelectDevicename).length === 0 && Object.keys(userSelectDevicecategory).length === 0) ? (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={bool}>
Add
</WsButton>
</>
) : (
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={!bool}>
Add
</WsButton>
</>
)}
您在每种情况下都有两个相同的 JSX。变化因子为 disabled={!bool}
。您可以为此使用三元运算符,但我会做一些不同的事情,如下所示。使代码更简洁。这是创建一个函数,该函数 returns 禁用按钮的布尔状态。
export default function YourComponent(){
function getBool(){
let lengthOne = Object.keys(userSelectDevicename).length
let lenghtTwo = Object.keys(userSelectDevicecategory).length
if(lengthOne === 0 && lengthTwo === 0) return true
else return false
}
return(
<>
{" "}
<WsButton type="submit" size="small" variant="contained" disabled={!getBool()}>
Add
</WsButton>
</>
)
}