reactjs - 在 React js 中导出多个非功能组件
问题描述
我正在尝试创建一个组件 Book,它有一个标题,我希望能够在 App.js 中导入它,如下面的代码所示,我对反应还很陌生,我不知道如何查找因为我不知道这个概念是怎么称呼的。如何制作一个组件书,并且该组件具有其他非功能性组件,例如用于标题书的 Book.Header 或 Book.Title,我可以按照 App.js 中所示使用
const Book = () => (
<div className="book">
<Book.Header />
</div>
);
Book.Header = ({child}) => (
<div><p>{child}</p></div> // here should render the text from Book.Header in App.js
);
export default Book;
在 App.js 中
import Book from "./components/Book";
function App() {
return (
<div className="App">
<Book
<Book.Header>My book header</Book.Header> // I want to render this in
// Book.Header
>
</Book>
</div>
);
}
解决方案
它必须是基于类的组件才能扩展该组件的功能,在这种情况下,您的 Book 组件看起来像这样:
class Book extends React.Component {
constructor(props) {
super(props);
this.state = {
header: this.props.children // path to children
};
}
render() {
const { header } = this.state;
return (
<div>
<Book.Header header={header}/>
</div>
);
}
}
Book.Header = ({header}) => (
<div>
<p>{Header}</p>
</div>
);
推荐阅读
- node.js - 节点 Sass 错误:找不到模块“mkdirp”
- angular - 如何在angular10中将mat-table放在mat-expansion中
- powershell - 从 PowerShell 提示符执行命令的更简单方法
- docker - 当健康检查 url 指向自身时,Docker swarm 服务未启动
- python - 在 PostgreSQL 数据库中存储字节类型对象
- javascript - Chartjs:如何设置对数刻度的最大刻度数
- reactjs - React 17.0.2 功能组件仅在第一次渲染时播放 CSS 动画
- javascript - 如何让用户只用粗体/斜体/下划线突出显示的内容?
- javascript - 指示元素相互交叉
- python - 如何将 XDP 文件与 XFA PDF 合并(通过 Python)?