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

如何为传递的组件添加类

陶高峯
2023-03-14

当尝试将一个组件作为另一个组件的道具传递时,一切工作都很好。但是如果我想要传递一个组件并在子级内部处理它的css类,那么我现在就迷失了方向。

在我的脑海中,我试图实现类似的目标:

import Navbar from 'what/ever/path/Navbar/is/in/Navbar.js';

export default function ParentComponent {
  return(
     <Navbar NavIcon={<MyIcon/>} />
  )
}
.... Imports etc...

export default function Navbar(props) {
  const {NavIcon} = props;
  return(
    <Navigation>
        // Now use the Prop as a Component and pass default classNames to it.
        // So that we don't need to wrap everything inside a span / div etc.
       <NavIcon className="AddCustomStylesAlwaysHere" />
   </Navigation>

  )
}

共有1个答案

芮雪风
2023-03-14

我想到了两种方法:

只需传递组件并让父级处理其实例化。这样,您所需要的唯一更改就是确保 接受classname属性:

const MyIcon = ({ className }) => {
  return <div className={className} />
};

const Navbar = ({ NavIcon }) => {
  return (
    <Navigation>
      <NavIcon className="AddCustomStylesAlwaysHere" />
    </Navigation>
  );
};

<Navbar NavIcon={MyIcon} />

这样,您就可以处理组件的实例化,而父组件只是呈现它。在这种情况下,您必须使用React实用程序来修改现有元素(https://reactjs.org/docs/React-api.html#cloneElement):

const MyIcon = ({ className }) => {
  return <div className={className} />
};

const Navbar = ({ NavIcon }) => {
  return (
    <Navigation>
      {React.cloneElement(NavIcon, { className: 'AddCustomStylesAlwaysHere' })}
    </Navigation>
  );
};

<Navbar NavIcon={<MyIcon />} />
 类似资料:
  • 我正在使用react语义ui模态对象。打开模态的对象是一个道具。 我想在另一个组件中嵌入模态: 如何传递JSX代码(

  • 问题内容: 我想在JDialog中添加诸如TextField,Button等组件。 问题答案: 1)首先创建一个Jpanel 2)将组件添加到该JPanel 3)创建JDialog 4)将JPanel添加到JDialog

  • 如何传递checkbox数组 传递数组基本上很简单,在模板里面这样写: <input size="40" type="checkbox" name="usergroup" /> <input size="40" type="checkbox" name="usergroup" /> <input size="40" type="checkbox" name="usergroup" /> 此处唯一

  • 问题内容: 我是ReactJS和JSX的新手,下面的代码有一些问题。 我试图将多个类添加到每个属性: 我的React组件是: 问题答案: 当确定(不)使用的类需要大量逻辑时,我使用类名。一个 过于简单的例子 : 就是说,如果您不想包含依赖项,那么下面会有更好的答案。

  • 问题内容: 我是ReactJS和JSX的新手,下面的代码有一些问题。 我试图将多个类添加到每个属性: 我的React组件是: 问题答案: 当确定(不)使用的类需要大量逻辑时,我使用类名。一个 过于简单的例子 : 就是说,如果您不想包含依赖项,那么下面会有更好的答案。

  • 我是ReactJS和JSX的新手,我对下面的代码有一点问题。 我正在尝试向每个上的属性添加多个类: 我的React组件是: