jsx返回语句中的条件[重复]

Posted

技术标签:

【中文标题】jsx返回语句中的条件[重复]【英文标题】:Conditional in jsx return statement [duplicate] 【发布时间】:2021-05-10 18:52:45 【问题描述】:

React 很新,我确信这很容易,但我正在尝试转换它:

    return values.map(value => 
        if(head) return <th key=uuidv4()> value </th>;
        return <td key=uuidv4()> value </td>
    );

到单个返回语句中。

基本上是用&lt;td&gt; 替换&lt;th&gt; 标记的条件检查。在香草中,我只返回一个模板字符串,但我似乎无法让它与 jsx 一起使用。 (类似这样)&lt;$head? 'th': 'td' key=$uuidv4()&gt;$value&lt;/$head? 'th': 'td'&gt;

我觉得我很接近了,但我显然返回了一个字符串 ::shrug::

任何帮助表示赞赏,

谢谢

【问题讨论】:

是的,谢谢 - 我确实尝试过搜索,但没有想到将其称为动态标签。奇怪,这是不可能的 【参考方案1】:

试试这个:

return values.map(value => 
  const Tag = `h$head ? 'th' : 'td'`;
  return <Tag key=uuidv4()>value</Tag>
);

【讨论】:

谢谢!绝对喜欢这种方法,即使它不是单行 出于兴趣 - 我将标志更改为字符串并尝试将其直接作为标签本身,即:&lt;tag key=uuidv4()&gt;value&lt;/tag&gt; - 但它仅在您指定大写字母时才有效完毕。不太清楚为什么? 这是 React 的约定:大写 = 函数/组件,否则它是一个 html 元素。【参考方案2】:

我愿意

return values.map(value => 
    return head ? <th key=uuidv4()> value </th> :
                  <td key=uuidv4()> value </td>
);

重要的是要说:我认为 2 个选项(td 或 th)中的代码“重复”太棒了!,因为这是两种不同类型的 UI 功能。最好将它们分开,并且可以单独对它们中的每一个进行更改。

【讨论】:

是的,我想这只是困扰我,我似乎无法弄清楚如何替换部分语句,但是谢谢 :) 不客气,请注意关于代码结构的答案的编辑。

以上是关于jsx返回语句中的条件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JSX条件渲染语法错误[重复]

列布局的React JSX条件渲染[重复]

意外的关键字'this'reactjs jsx [重复]

如何使用 Facebook React 的 JSX 拥有条件元素并保持 DRY?

case 语句中的多个条件重复表中的行

使用条件语句的语义错误[重复]