首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数作为React子函数无效。-反应中的功能成分

函数作为React子函数无效。-反应中的功能成分
EN

Stack Overflow用户
提问于 2020-04-13 07:43:47
回答 1查看 194关注 0票数 0

我目前正在尝试在我的项目中集成Patternfly。是可供参考的链接im,工作良好。但是需要为页眉、页脚、topnav和sidenav提供独立的组件。因此,当将代码划分到组件时,im得到的问题是

PageSidebar提供的支持导航无效,预期为ReactNode。

这是我的西德纳夫密码

代码语言:javascript
复制
import ReactDOM from 'react-dom';
import "@patternfly/react-core/dist/styles/base.css";
import '../../app/fonts.css';

import React from 'react';
import {  
  Nav,
  NavExpandable,
  NavItem,
  NavList  
} from '@patternfly/react-core'; 

function SideNav() {

    this.state = { 
      activeGroup: 'grp-1',
      activeItem: 'grp-1_itm-1'
    }; 

    this.onNavSelect = result => {
      this.setState({
        activeItem: result.itemId,
        activeGroup: result.groupId
      });
    }; 

    const { activeItem, activeGroup } = this.state;

    const PageNav = (
      <Nav onSelect={this.onNavSelect} aria-label="Nav" theme="dark">
        <NavList>
          <NavExpandable title="System Panel" groupId="grp-1" isActive={activeGroup === 'grp-1'} isExpanded>
            <NavItem groupId="grp-1" itemId="grp-1_itm-1" isActive={activeItem === 'grp-1_itm-1'}>
              Overview
            </NavItem>
            <NavItem groupId="grp-1" itemId="grp-1_itm-2" isActive={activeItem === 'grp-1_itm-2'}>
              Resource usage
            </NavItem>
            <NavItem groupId="grp-1" itemId="grp-1_itm-3" isActive={activeItem === 'grp-1_itm-3'}>
              Hypervisors
            </NavItem>

          </NavExpandable>
        </NavList>
      </Nav>
    );


        return (PageNav);


}

export default SideNav;

以上是我的sideNav函数组件,并在布局组件中使用它。

我的标题组件

代码语言:javascript
复制
import "@patternfly/react-core/dist/styles/base.css";
import '../../app/fonts.css';

import React from 'react';
import {  
  Page,
  PageHeader,
  PageSection,
  PageSectionVariants,
  PageSidebar, 
  TextContent,
  Text, 
} from '@patternfly/react-core';

import SideNav from '../sideNav/sideNav'; 

class Layout extends React.Component {

  render() {

    const Header = (
      <PageHeader 
        toolbar={PageToolbar} 
        showNavToggle
      />
    );
    const Sidebar = <PageSidebar nav={SideNav} theme="dark" />;


    return (
      <React.Fragment>
        <Page
          header={Header}
          sidebar={Sidebar} 
          mainContainerId={pageId}
        >
          <PageSection variant={PageSectionVariants.light}>
            <TextContent>
              <Text component="h1">Main title</Text>
              <Text component="p">
                Body  
              </Text>
            </TextContent>
          </PageSection>

        </Page>
      </React.Fragment>
    );
  }
}

export default Layout;

问题是当将我的函数组件以const Sidebar = <PageSidebar nav={SideNav} theme="dark" />;的形式传递给const Sidebar = <PageSidebar nav={SideNav} theme="dark" />;属性时。

这到底是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 07:57:57

查看种子应用程序中的代码,<PageSidebar>nav属性被设置为一些React元素(一些JSX),而不是React组件(返回某些JSX的函数)。

我想,与其使用nav={Sidenav},不如使用nav={<Sidenav />},以使代码与示例匹配。

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

https://stackoverflow.com/questions/61183476

复制
相关文章

相似问题

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