当前位置: 首页 > 知识库问答 >
问题:

做出反应。Children.only预期接收单个React元素子卡住

皮煜
2023-03-14

获取错误错误:反应。Children.only预期接收一个React元素子元素。真的卡住了,有人帮忙吗?


  componentDidMount() {
    axios.get(this.props.url).then((res) => {
      const data = res.data._embedded.districts;
      this.setState({ data });
      console.log(this.state.data);
    });
  }
  render() {
    console.log("render");
    if (this.props.terr === "districts") {
      return (
        <FeatureGroup>
          {this.state.data.map((data) => {
            return (
              <GeoJSON
                key={data.name}
                data={data.geometry}
                style={this.myStyle}
              >
                <Popup>{data.name}</Popup>
              </GeoJSON>
            );
          })}
        </FeatureGroup>
      );
    }
  }
}

共有3个答案

方博学
2023-03-14

正如错误所描述的,FeatureGroup希望将单个元素作为子元素。当前,给定数组,您有一对多的元素。原型map用于处理数组和生成元素。这可能来自FeatureGroup上指定允许多少子级的道具类型。这并不少见,像react redux中的Provider这样的元素需要一个子元素。至少包装数组的输出。原型使用元素映射

<FeatureGroup>
  <div>
    {this.state.data.map((data) => {
      return (
        <GeoJSON
          key={data.name}
          data={data.geometry}
          style={this.myStyle}
        >
          <Popup>{data.name}</Popup>
        </GeoJSON>
      );
    })}
  </div>
</FeatureGroup>

或者你可以用React。片段:

<FeatureGroup>
  <React.Fragment>
    {this.state.data.map((data) => {
      return (
        <GeoJSON
          key={data.name}
          data={data.geometry}
          style={this.myStyle}
        >
          <Popup>{data.name}</Popup>
        </GeoJSON>
      );
    })}
  </React.Fragment>
</FeatureGroup>

希望这有帮助!

邢财
2023-03-14

没有看到所有的代码是很难告诉。我有一个刺痛,你的this.state.data是null或空在你的构造函数,第一次你试图呈现你的地图函数不返回任何数据。

首先尝试检查数据中是否有数据。

{this.state.data.length && <FeatureGroup>
      {this.state.data.map((data) => {
        return (
          <GeoJSON
            key={data.name}
            data={data.geometry}
            style={this.myStyle}
          >
            <Popup>{data.name}</Popup>
          </GeoJSON>
        );
      })}
    </FeatureGroup>}
皇甫乐
2023-03-14

我也犯了同样的错误。在我的例子中,在带有标签的组件内部有一个空白区域。内部的空空间{“”}被视为另一个组件,因为

 <Link href="/"> {" "} // I removed empty space
    <a className="navbar-brand">GitTix</a>
  </Link>
 类似资料:
  • 我试图使用antd库创建一个web表,但遇到了一个错误 “react.development.js:1251未捕获错误:react.Children.only应接收单个react元素子元素”。我完全陷入困境,无法找到解决办法。有人能帮忙吗?

  • 我正在学习自己的反应。在我的渲染循环中,我尝试在其中添加元素,以便为每个数据创建超链接。但我有一个问题:反应。儿童仅应接收单个React元素子元素。有人知道为什么会这样吗?这是我的部分代码。希望能让我的问题更容易理解。我跳过了编码的一些部分,因为问题似乎发生在渲染部分。 应用程序。js ### 编码乐趣。js ps:posts是json数据,我没有在这里添加太多数据。 列表age.js } 如果我

  • 我的React本机代码中有以下呈现方法: 它给我这个错误: 预期接收单个React元素子元素 如果我删除了组件,它就可以正常工作。如果我删除图像组件,它仍然会给出错误。 我不明白为什么它会给我这个错误<代码>

  • 我正在构建一个基本的react-login应用程序,用于教育目的,并使用React-router的onEnter prop功能验证一条路由 一切都按预期工作,但我不明白为什么路由器会在一眨眼的时间内渲染Home组件,然后在我登录后尝试路由时将路由替换为?如果我登录后尝试或,也会发生同样的事情。,有办法修复这种行为吗?? 我已经尝试通过在componentWillMount方法中对用户进行身份验证来

  • 问题内容: 我有一个组件,单击时需要切换一个组件。这有效: 它使用条件显示或不显示组件。现在,我希望它逐渐消失。我尝试添加一个挂钩以过渡不透明度,但这不起作用。有没有简单的方法可以做到这一点? 问题答案: 使用CSS类切换+不透明度转换的示例:https : //jsfiddle.net/e7zwhcbt/2/ 这是有趣的CSS: 和render函数: