【问题标题】:Why h1 doesn't appear when run this code? [duplicate]为什么运行此代码时没有出现 h1? [复制]
【发布时间】:2020-01-25 20:57:31
【问题描述】:

我有以下 React 渲染函数:

render() {
  return (
    <h1>Post list</h1>,
    this.state.posts_data.map(p =>
      <div key={p.id}>
        {p.title} , {p.id} , {p.userId}
      </div>
    )
  );
}

为什么运行代码时没有出现h1?

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

您只能返回 1 个元素,在您的情况下,您有 2 个选项,您可以将所有元素包装在一个 &lt;div&gt; 中,如下所示:

render() {
  return (
    <div>
      <h1>Post list</h1>,
      {this.state.posts_data.map(p =>
        <div key={p.id}>
          {p.title} , {p.id} , {p.userId}
        </div>
      }
    </div>
  );
}

或者你可以使用&lt;React.Fragment /&gt;

render() {
  return (
    <React.Fragment>
      <h1>Post list</h1>,
      {this.state.posts_data.map(p =>
        <div key={p.id}>
          {p.title} , {p.id} , {p.userId}
        </div>
      }
    </React.Fragment>
  );
}

注意:在 React 中我们使用 JSX,因此如果您想在 HTML 中使用 Javascript,您必须将其包装在 { } 中,这就是我将您的 this.state.posts_data.map() 包装在这些括号中的原因。

确保this.state.posts_data 是一个数组,否则会引发错误。

【讨论】:

  • 另外,逗号也不再需要了。
【解决方案2】:

我用数组概念重写了代码,问题解决了

 render() {
        return (
               [
                <h1>Post list</h1>,
                this.state.posts_data.map(p =>
                <div key={p.id}>
                    {p.title} , {p.id} , {p.userId}
                </div>
                )
               ]
        );

    }

【讨论】:

  • 这实际上是一个React.Fragment 在后台。 ;) 两者都可以使用,这也意味着组件可以从例如返回结果。直接.map
  • 当然,但我发现使用 [] 简单易行 :)。
  • @sameerRezaKhan ")" 是 true ,它是地图函数的结束标记
  • @EmileBergeron 当然,但我发现使用 [] 简单易行:)。
  • @EmileBergeron 我尝试了片段方式而不是 [] ,但我在 p 中收到错误,它说未定义..有什么问题?
【解决方案3】:

您必须将两个元素都包装在一个标签中。渲染只能返回一个。

【讨论】:

  • 我尝试了你的想法,但 p 出现错误,为什么?
【解决方案4】:

我修改了你的代码。

render() { 
    return ( 
        [
            <h1>Post list</h1>, 
            this.state.posts_data.map(p => (
                  <div key={p.id}> 
                      {p.title} , {p.id} , {p.userId} 
                  </div>
               ) 
            )
        ]
    );
}

当您有多个元素但不希望它们包装在单个父节点中时,您需要将它们推送到数组中。 您还需要在 jsx 中的 js 代码周围使用花括号。

【讨论】:

  • 告诉我答案有什么问题
  • 这个想法解决了我的问题..但是你有“{”导致错误..你可以看到我的答案
  • 我写了何时使用 {,},如果它解决了你的问题,那为什么要投反对票?
  • 我投了反对票,因为{} 在这里使用不正确。
  • 您可以建议编辑。但无论如何,我会接受,那是我的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多