Reactjs 在React和Typescript中使用三元运算符的正确方法是什么
我目前正在使用此代码:Reactjs 在React和Typescript中使用三元运算符的正确方法是什么,reactjs,typescript,Reactjs,Typescript,我目前正在使用此代码: render:props.columnLinks[key] ? ((文本):ReactElement=>) :未定义, 但是我想使用&操作符简化语句。但是,当我执行此操作时,Typescript会抛出错误,包括: Type 'false' is not assignable to type '((text: any, record: TableDataPoint, index: number) => ReactNode) | undefined' 如何才能像在J
render:props.columnLinks[key]
? ((文本):ReactElement=>)
:未定义,
但是我想使用&
操作符简化语句。但是,当我执行此操作时,Typescript会抛出错误,包括:
Type 'false' is not assignable to type '((text: any, record: TableDataPoint, index: number) => ReactNode) | undefined'
如何才能像在JavaScript中那样构造它?您的三元组失败,因为当您的条件不满足时,您将属性设置为
false
,而不是表达式
您可能会从中受益——React提供了一些更常见的技术,并用简单的代码示例进行了解释。至少,它可以帮助您缩小对此类问题的定义范围,或者认识到您的条件渲染方法并非阻力最小的途径
在JavaScript中,true&&expression
总是计算为expression
,false&&expression
总是计算为false
。换句话说,只有当表达式位于三元运算符的右侧时,才会对其求值。在这种情况下,您的类型(((text:any,record:TableDataPoint,index:number)=>ReactNode)|未定义的“
)不能为false
。当您尝试将其设置为false
时,TypeScript会正确地提醒您这是不允许的
如果您的目标是条件呈现,那么可以将逻辑移到HTML中?否则,我会在其他地方处理您的空检查,这样您就可以更好地控制该属性的计算结果。props的值是多少。columnLinks[key]您想用三元函数实现什么?条件呈现?谢谢,如果
props.columnLinks[key]
未定义,我希望render:
对象属性的值为:((text):ReactElement=>)
@Train它可以是未定义的或字符串。您也可以使用条件排列:{…columnLinks[key]&{render:text=>}
谢谢@R.McManaman-我实际上是在一个直接的javascript工厂函数中进行条件赋值,在这里我分配对象属性,在这种情况下,我希望赋值是有条件的。恰好,应该分配给属性的是React元素。它将是作为道具传递的对象的属性。我的问题是,我不需要三元运算符的两个分支,只要在条件真实的情况下分配这个属性即可。我试过这样重新写,但仍然不起作用,你能提出什么建议吗<代码>常量linkElement=props.columnLinks[key]!=未定义(&&(文本:字符串):ReactElement=>)<代码>渲染:linkElement