当前位置: 首页 > 面试题库 >

在JSX中返回多个元素

燕宜修
2023-03-14
问题内容

如果用户未登录,我试图返回两个链接。

<Nav>
    {if(this.state.user) {
        <NavItem onClick={this.logout}>Log out</NavItem>
    } else {
        <NavItem onClick={this.login}>Log in</NavItem>
        <NavItem onClick={this.register}>Register</NavItem>
    }
    }
</Nav>

我知道我可以使用三元运算符来做到这一点:

<Nav>
    {this.state.user ?
        <NavItem onClick={this.logout}>Log out</NavItem>
        :
        <NavItem onClick={this.login}>Log in</NavItem>
    }
</Nav>

问题是我要渲染两个NavItems。我看到我可以用一个函数来做到这一点,但是当我尝试用这样的函数来做到这一点时:

myFunction(){
    return(
        <NavItem onClick={this.login}>Zaloguj się</NavItem>
        <NavItem onClick={this.login}>Zaloguj się</NavItem>
    )
}

它告诉我,第二个元素不可访问并中断。那么如何返回两个元素?对代码进行字符串化无济于事


问题答案:

如果您使用的是React v16.2.0及更高版本,则可以使用较短版本的Fragments

<>
 <NavItem onClick={this.login}>Zaloguj się</NavItem>
 <NavItem onClick={this.login}>Zaloguj się</NavItem>
</>

如果您使用的是React v16以下的版本,则只能在中返回一个元素jsx,因此您必须将元素包装在其中:

<div>
 <NavItem onClick={this.login}>Zaloguj się</NavItem>
 <NavItem onClick={this.login}>Zaloguj się</NavItem>
</div>

如果您使用React v16和abose,则可以使用Fragments

import React, { Fragment } from 'react';

...
...

    <Fragment>
     <NavItem onClick={this.login}>Zaloguj się</NavItem>
     <NavItem onClick={this.login}>Zaloguj się</NavItem>
    <Fragment/>

您还可以返回此处宣布的元素数组

 return [
    <NavItem key="1" onClick={this.login}>Zaloguj się</NavItem>,
    <NavItem key="2" onClick={this.login}>Zaloguj się</NavItem>
  ];

根据您的环境,您可能无法使用所有这些解决方案:对片段的支持



 类似资料:
  • 问题内容: 我是新手,遇到此问题: 当我这样渲染时,它会给我错误提示 我应该为每个html标签或每一行创建一个componenet,还是可以以这种方式呈现。 有什么建议吗? 问题答案: 在React <v16.0中,该方法只能呈现单个根节点。( 更新: 这在v16中已更改,请参见下文)。就您而言,您将返回3个节点。为了解决这个问题,您可以将3个节点包装在一个根节点中: 在React v16中,可以

  • 问题内容: 我正在尝试遍历哈希中的所有键,但是循环没有返回任何输出。预期的输出。知道为什么JSX没有返回并输出正确吗? 问题答案: 不返回任何内容- 而是使用:

  • 问题内容: 单行工作正常 不适用于多行 谢谢。 问题答案: 尝试将标签视为函数调用(请参阅docs)。然后第一个变成: 第二个: 现在应该清楚,第二个片段实际上没有任何意义(在JS中不能返回多个值)。您必须将其包装在另一个元素中(很可能是您想要的,这样您还可以提供有效的属性),或者可以使用类似以下内容的方法: 使用JSX糖: 您不需要展平结果数组,React会为您完成。请参阅以下小提琴http:/

  • 问题内容: 我试图在 JavaScript中 返回两个值。这可能吗? 问题答案: 否,但是您可以返回一个包含您的值的数组: 然后,您可以像这样访问它们: 使用最新的ECMAScript 6语法 *,您还可以更直观地分解返回值: 如果要在每个返回值上贴上“标签”(易于维护),则可以返回一个对象: 并访问它们: 或使用ES6语法:

  • 问题内容: 序言:我知道使用列表或其他集合来返回结果,但是随后我必须遍历列表以将结果取出:请参阅第二个示例 前言2:我正在寻找“ Java不支持…”之外的答案。 我正在寻找一种从Java方法调用返回多个对象的便捷方法。 有点像PHP: 我真的厌倦了在参数中传递持有者对象,例如: 然后: 如果有人想出一种优雅的方法来解决这个问题,那将非常有兴趣。 使用清单 这有两个缺点: 我必须先将清单装在房子的被

  • 问题内容: 我正在尝试从使用两个表(员工和部门)的函数返回%rowtype中的多个值,但是它对我不起作用。 问题答案: 上面的函数编译没有任何错误?是什么类型的?理想情况下,它应该像下面这样。

  • 我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!

  • 假设我有一个这样的: 看起来是这样的: 和一个X乘以Y的函数: 如果我想添加一个新的熊猫系列到df我可以做: 它起作用了! 现在我想添加多个系列: 我有这个功能: 像这样的东西?: 它不工作! 我希望列接收除法,列接收乘法! 注意:这不是我正在使用的代码,但我期待相同的行为。