Javascript 使用三元运算符动态更改视图高度

Javascript 使用三元运算符动态更改视图高度,javascript,react-native,ternary-operator,Javascript,React Native,Ternary Operator,我正在尝试使用三元运算符动态更改视图高度 首先,我得到设备的屏幕高度 const { height: SCREEN_HEIGHT, } = Dimensions.get('window') const IS_IPHONE_X = SCREEN_HEIGHT === 812 const IS_IPHONE_XR = SCREEN_HEIGHT === 896 const IS_IPHONE_SIX = SCREEN_HEIGHT === 667 其次,我检查设备是否为iphoneX 使用三

我正在尝试使用三元运算符动态更改视图高度

首先,我得到设备的屏幕高度

const {
  height: SCREEN_HEIGHT,
} = Dimensions.get('window')

const IS_IPHONE_X = SCREEN_HEIGHT === 812
const IS_IPHONE_XR = SCREEN_HEIGHT === 896
const IS_IPHONE_SIX = SCREEN_HEIGHT === 667
其次,我检查设备是否为iphoneX

使用三元运算符很好,但我只能用上面的代码检查两个设备

有没有办法在三元运算符中使用多个条件? 我试过这个。但给了我一个错误:

const IMAGE_BAR_HEIGHT = Platform.OS === 'ios' ?( IS_IPHONE_X ? 332 : IS_IPHONE_XR ? : 368 : IS_IPHONE_SIX : 300) : 0

使用三元运算符肯定可以实现这一点,但不建议使用嵌套三元运算符。我建议在这里使用if-else而不是三元

设高度=0; 如果Platform.OS===“ios”{ 如果是IPHONE{ 高度=332; }否则,如果是IPHONE{ 高度=368; }否则如果是IPHONE六号{ 高度=300; } } 如果你只想用三元来做这个

const height=Platform.OS=='ios'?是IPHONE吗?332:是IPHONE吗?368:IPHONE是六号吗?300 : 0 : 0;
最好使用逻辑运算符和三值运算符

const IMAGE_BAR_HEIGHT = Platform.OS === 'ios' ? ( IS_IPHONE_X && 332 || IS_IPHONE_XR &&  368 || IS_IPHONE_SIX && 300) : 0

或者我建议拆分代码

常量屏幕高度=尺寸。获取“窗口”。高度; iOSDeviceInfo==>{ 开关屏高度{ 案例812: 返回'X'; 案例866: 返回'XR'; 判例667: 返回“六”; 违约: 打破 } } 常量图像\u条\u高度={ X:332, XR:368, 六点三百分,, } const imageHeight=Platform.OS=='ios'?图像条高度[iOSDeviceInfo]:0
没有测试

是的,您可以在同一表达式中使用任意数量的三元运算符,但需要确保其语法正确。后面的部分是_IPHONE _XR?包含错误。问号后面紧跟着一个冒号,这在语法上是不正确的。请删除该冒号。那么IS_IPHONE_六的位是一个不正确/不完整的三元表达式。我猜你想写的是IPHONE六号?300:0
const IMAGE_BAR_HEIGHT = Platform.OS === 'ios' ? ( IS_IPHONE_X && 332 || IS_IPHONE_XR &&  368 || IS_IPHONE_SIX && 300) : 0