首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应包装组件不呈现。

反应包装组件不呈现。
EN

Stack Overflow用户
提问于 2020-03-13 20:28:30
回答 1查看 455关注 0票数 1

有人能告诉我下面这两个例子之间的区别吗,上面的那个正确地呈现,而下面的一个根本没有呈现"XYZ“内容?您还能告诉我为什么它们的行为不同,以及我如何“包装”这样的组件吗?

代码语言:javascript
复制
import React from 'react';
import "antd/dist/antd.css";
import {  Collapse  } from "antd";


const { Panel } = Collapse;


export default function ScraperList({ scraper }) {
    console.log(scraper);
  return (
  <Collapse accordion>
    <Panel header={scraper.name} key={scraper.id}>
      <p>XYZ</p>
    </Panel>

  </Collapse>
  );
}
代码语言:javascript
复制
import React from 'react';
import "antd/dist/antd.css";
import {  Collapse  } from "antd";


const { Panel } = Collapse;


function Scraper({ scraper: { id, name } }) {
  return (
    <Panel header={name} key={id}>
      <p>XYZ</p>
    </Panel>
  );
}

export default function ScraperList({ scraper }) {
    console.log(scraper);
  return (
  <Collapse accordion>
    <Scraper scraper={scraper}/>

  </Collapse>
  );
}

我原以为它们的工作原理是一样的,因为标记是一样的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 20:53:53

这是因为Collapse正在使用React 儿童API来操作它的直接子程序,并为它提供额外的支持。在这种情况下,折叠期望子程序是Panel,因此为它提供了完成操作所需的额外支持。这是用cloneChild API完成的。

代码语言:javascript
复制
React.cloneElement(
  element,
  [props],  // this is the extra props that can be passed into component.
  [...children] // this is for sending modified/new children
)

当您在混合中添加额外的组件(如Scraper )时,Panel不会接收到上述道具,因此无法呈现。但是您可以通过Panel将道具转发到Scraper

代码语言:javascript
复制
import {  Collapse  } from "antd";


const { Panel } = Collapse;


function Scraper(props) {
  return (
    <Panel {...props} header={props.scraper.name} key={props.scraper.id}>
      <p>XYZ</p>
    </Panel>
  );
}

export default function ScraperList({ scraper }) {
  return (
    <Collapse accordion>
      <Scraper scraper={scraper} />
    </Collapse>
  );
}

Stackblitz演示

虽然这是肯定可行的,但这并不是建议的办法,因为我们可能仍然缺少一些他们已经说明的直接关系。要了解这与rc-collapse的工作方式,AntD在下面使用:

来源

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60676886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档