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

在React.render()中返回多个元素

国兴贤
2023-03-14
问题内容

我是新手,遇到此问题:

render: function(){
    return (
        <h3>Account</h3>
        <a href="#" onClick={some_event}>Login</a>
        <a href="#" onClick={some_event}>Logout</a>
)}

当我这样渲染时,它会给我错误提示 multiple components must wrapt with end

我应该为每个html标签或每一行创建一个componenet,还是可以以这种方式呈现。

有什么建议吗?


问题答案:

在React <v16.0中,该render方法只能呈现单个根节点。( 更新:
这在v16中已更改,请参见下文)。就您而言,您将返回3个节点。为了解决这个问题,您可以将3个节点包装在一个根节点中:

render: function(){
  return (
    <div>
      <h3>Account</h3>
      <a href="#" onClick={some_event}>Login</a>
      <a href="#" onClick={some_event}>Logout</a>
    </div>
)}

在React v16中,可以render()返回一个元素数组。

与其他数组一样,您需要为每个元素添加一个键,以避免出现键警告:

render() {
  return [
    <ChildA key="key1" />,
    <ChildB key="key2" />,
    <ChildC key="key3" />,
  ];
}

另一种选择是使用Fragment。片段使您可以将子级列表分组,而无需在DOM中添加额外的节点。

render() {
  return (
    <React.Fragment>
      <ChildA />
      <ChildB />
      <ChildC />
    </React.Fragment>
  );
}

还有一种简短的语法(<>),用于声明片段:

render() {
  return (
    <>
      <ChildA />
      <ChildB />
      <ChildC />
    </>
  );
}


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

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

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

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

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

  • 我正在尝试使用SpringBoot2.0和新的reactive webFlux库。我想知道如何将通过无阻塞WebClient进行的两个调用的结果返回给我的Springboot API的调用者。我的代码是: 然而,如果我这样称呼它,我得到的回应是 而不是SearchResponse对象的内容。我觉得我可能错过了一个基本的点,这是如何工作的!我的想法是,因为WebClient没有阻塞,所以我可以向we