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]]
这个语法有效。你能再解释一下吗?看这个线程,我想我可以这样做,但我对内联函数很好奇。我觉得在这种情况下使用函数是多余的。我的主要目的是在
标签中使用开关。不知道在没有函数调用的情况下我将如何执行此操作?为什么开关需要位于
内部?在这个方法中,标题
到字符串之间的转换甚至不必发生,您可以使用一个静态/全局函数来完成。不需要在那里,但为了学习如何使用内联函数。