Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Javascript 如何使用内联开关返回jsx元素?_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 如何使用内联开关返回jsx元素?

Javascript 如何使用内联开关返回jsx元素?,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我试图返回一个带有内联开关的元素。但是我只得到一个空的。我做错了什么 getRowTdForHeader: (header: string, entry: response) => { return (<span> {() => { switch (header) { case "Name": return entry.nam

我试图返回一个带有内联开关的元素。但是我只得到一个空的
。我做错了什么

 getRowTdForHeader: (header: string, entry: response) => {
            return (<span>
                {() => {
                    switch (header) {
                        case "Name":  return entry.name;
                        case "Type": return entry.type;
                        default: return entry.name;
                    }
                } }
            </span>);
        }
getRowTdForHeader:(header:string,entry:response)=>{
返回(
{() => {
开关(收割台){
案例“名称”:返回条目.Name;
案例“类型”:返回条目.Type;
默认值:return entry.name;
}
} }
);
}

结果是一个空的
span
,如果我在返回处放置一个断点,它将永远不会进入switch语句。如果可能的话,我想把它作为班轮。顺便说一句,如果我不内联它,开关工作正常。

您定义了一个函数,但没有调用它

() => {
    switch (header) {
        case "Name":  return entry.name;
        case "Type": return entry.type;
        default: return entry.name;
    }
}

您必须将箭头函数包装在父函数中

{(() => {
    switch (header) {
                        case "Name":  return entry.name;
                        case "Type": return entry.type;
                        default: return entry.name;
                    }
})()}

我建议您将结果放入变量中,然后使用它:

getRowTdForHeader: (header: string, entry: response) => {
    let str: string;
    switch (header) {
        case "Name":  str = entry.name;
        case "Type": str = entry.type;
        default: str = entry.name;
    }

    return <span> { str } </span>;
}
getRowTdForHeader:(header:string,entry:response)=>{
让str:string;
开关(收割台){
案例“名称”:str=entry.Name;
案例“类型”:str=entry.Type;
默认值:str=entry.name;
}
返回{str};
}

我该如何称呼它?正如@Vladu首先回答的那样,我看不出
()=>
的目的。其次,甚至不需要开关。您可以执行
entry[(header | | | name')]
@Rajesh这是如何工作的
entry[(header | | | name')]
entry
是一个对象,由于您返回的属性是同一个单词,但大小写不同,
header.toLowercase()
将为您提供属性名称。因此,如果标题是
Name
entry[header.toLowerCase()]
将返回
entry['Name']
<代码>||“名称”是默认值。如果未定义标题,则返回
name
。我也很抱歉,我忘了
.toLowerCase()
@Rajesh好的,谢谢。但是标题名称不一定反映属性名称。但是大小写是否总是只有返回值?如果是,我建议创建一个映射,然后返回
entry[map[header]]
这个语法有效。你能再解释一下吗?看这个线程,我想我可以这样做,但我对内联函数很好奇。我觉得在这种情况下使用函数是多余的。我的主要目的是在
标签中使用开关。不知道在没有函数调用的情况下我将如何执行此操作?为什么
开关需要位于
内部?在这个方法中,
标题
到字符串之间的转换甚至不必发生,您可以使用一个静态/全局函数来完成。不需要在那里,但为了学习如何使用内联函数。