Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在React和Typescript中使用三元运算符的正确方法是什么_Reactjs_Typescript - Fatal编程技术网

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