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

React.js如何在组件内部渲染组件?

轩辕弘雅
2023-03-14
问题内容

我被困住了。我在单独的文件上有几个单独的组件。如果我在main.jsx中渲染它们,如下所示:

ReactDOM.render(<LandingPageBox/>, document.getElementById("page-landing")); 
ReactDOM.render(<TopPlayerBox topPlayersData={topPlayersData}/>, document.getElementById("wrapper profile-data-wrapper"));
ReactDOM.render(<RecentGamesBox recentGamesData={recentGamesData}/>, document.getElementById("history wrapper"));

一切正常,但我想知道这是否是一个好习惯?也许可以做一些像只有一个ReactDom.render这样的事情:

ReactDOM.render(<LandingPageBox recentGamesData={recentGamesData} topPlayersData={topPlayersData}/>, document.getElementById("page-landing"));

我尝试了各种LandingPageBox变量,以某种方式包括了其他两个组件,但没有运气。它们有时在页面外渲染,依此类推。我认为应该看起来像这样:

import React from 'react';
import RecentGames from '../RecentGames/RecentGames.jsx';
import TopPlayers from '../TopPlayers/TopPlayers.jsx';
import PageTop from './PageTop.jsx';
import PageBottom from './PageBottom.jsx';

class LandingPageBox extends React.Component {
    render() {
        return (
            <body className="page-landing">
                <PageTop>
                     <TopPlayers topPlayersData={this.props.topPlayersData} />
                </PageTop>
                <PageBottom>
                        <RecentGames recentGamesData=    {this.props.recentGamesData}/>
                    </PageBottom>              
                </body>
            );
        }
    }

export default LandingPageBox;

但是此代码仅呈现PageTop和PageBottom,而没有播放器或游戏组件。

所以我的问题是,如何设置LandingPageBox文件,以使TopPlayers组件将在PageTop组件内部渲染,而最近的Games组件将在PageBottom组件内部渲染?谢谢。


问题答案:

在你的例子中

return (
        <body className="page-landing">
            <PageTop>
                 <TopPlayers topPlayersData={this.props.topPlayersData} />
            </PageTop>
            <PageBottom>
                 <RecentGames recentGamesData=    {this.props.recentGamesData}/>
            </PageBottom>              
        </body>
       );

正如您已经发现的那样,React将仅呈现顶级自定义组件PageTopPageBottom。其他组件(TopPlayersRecentGames
嵌套
在这些组件中。那是什么意思?React不仅仅显示那些嵌套的组件,因为它不知道如何做到这一点。相反,所有渲染都必须由外部组件PageTop和完成PageBottom。React只是将嵌套的组件传递给它们(PageTop获取TopPlayersPageBottom获取RecentGamesthis.props.children。现在
由外部组件
决定如何处理这些嵌套组件。在您的示例中,您将修改PageTopPageBottom组件,以用于{this.props.children}以合适的方式显示其嵌套组件。




 类似资料:
  • 问题内容: 我想从自己的组件中递归添加一个react组件。我看到了一个树组件的示例,该组件通过子TreeNode进行映射并以相同方式添加子节点。不幸的是,这对我根本不起作用。这个想法是要有一个简单的注释组件,而答复将重用相同的组件。 我收到以下错误消息: 未捕获的TypeError:无法构造“注释”:请使用“ new”运算符,此DOM对象构造函数不能作为函数调用。 这是传递给组件的JSON数据的示

  • 问题内容: 我有以下代码: 我想做的是使用base64编码在JEditorPane上呈现图像以存储图像。它不必是base64,但这是我尝试在JEditorPane上呈现HTML内容时所获得的,但是我需要使用BufferedImage上的图像(由应用程序生成),并且,确实希望不必将映像保存到硬盘中的文件中。 我能以某种方式在Swing组件中显示BufferedImage以及HTML(在IMG标签给定

  • 我使用的是React Router v4的最新版本,我试图在div中呈现我的页面组件Home/About,但我遇到的问题是,如果我将路由添加到我的头中,它将切换路由,但它们将显示Home/About组件作为头的一部分,而不是我希望它们出现的位置。 如果我将路由放入中,则路由器不工作,但不会在控制台上抛出任何错误。 如何在div中显示和切换组件? 网页链接 app.js Header.js home

  • 我对react还比较陌生,我一直在分解一个web应用程序,并用react组件替换部分。我现在正在开发一个组件,其中包含我创建的几个不同组件。 在新组件中,我在componentDidMount函数中进行API调用,并创建子组件。乍一看,一切看起来都很完美,但当我们在其中一个子组件中进行状态更改,然后在父组件中进行更改时,子组件将其状态重置为更改之前的状态。 我知道发生了什么,州政府没有被传递给家长

  • ant design +Table组件 + Switch组件组合使用 在 输出的checked都为true了,但是Switch没有选中, 甚至我对table的data数据进行了useMemo了还是不行, ant design +Table组件 + Switch正常的渲染

  • 问题内容: 我尝试运行RichFaces4应用,但组件未渲染。例如,当我尝试这个演示:演示时,我得到如下信息: 我的代码与演示中的代码几乎相同。我刚刚添加了表单标签,因为它对此有所抱怨。 问题答案: 这就是Crome开发人员工具告诉我的内容 http://img571.imageshack.us/i/rfnotdefined.jpg (未捕获的ReferenceError:未定义RichFaces