首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展默认的className组件

扩展默认的className组件
EN

Stack Overflow用户
提问于 2022-07-11 10:39:10
回答 2查看 56关注 0票数 1

嘿,我使用引导和反应,我试着找出,如何通过传递更深的className道具来扩展我的组件。在我的原子组件中有两个文件。第一个具有组件声明。

Breadcrumb.js

代码语言:javascript
复制
export const Breadcrumb = (props) => {
  const { className } = props;
  const classes = getClasses(className);

  return (
    <Link to={props.path} className={classes} {...props}>
      {props.children}
    </Link>
  );
};

另一个带有getClasses()的类返回所有默认的BS类。

Breadcrumb.style.js

代码语言:javascript
复制
export const getClasses = (extra = "") => {
  const defaultClasses = getDefaultClasses();
  const addingClasses = extra;
  const classes = `${defaultClasses} ${addingClasses}`;

  return classes;
};

const getDefaultClasses = () => `ps-3 fs-3 fw-bold text-decoration-none`;

我想要实现的是,当我调用我的Breadcrumb组件时,我将决定在额外的类上扩展它,我可以通过传递className props...like来实现这一点。

TopBar.js

代码语言:javascript
复制
export const TopBar = () => {
  const breadcrumbs = useBreadcrumbs(routes, { disableDefaults: true });
  const classes = getClasses();

  return (
    <div className={classes}>
      {breadcrumbs.map(({ match, breadcrumb }) => (
        <Breadcrumb
          path={match.pathname}
          children={breadcrumb}
          className="cs_breadcrumb"
          key={uuidv4()}
        />
      ))}
    </div>
  );
};

但是当我这样做的时候,我的声明className是通过调用Breadcrumb className覆盖的.尽管在Breadcrumb.js中,console.log(类)返回连接的类。有人知道如何做到这一点,或者有什么建议吗?我会很高兴的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-11 10:49:53

变化

代码语言:javascript
复制
export const Breadcrumb = (props) => {
  const { className } = props;
  const classes = getClasses(className);

  return (
    <Link to={props.path} className={classes} {...props}>
      {props.children}
    </Link>
  );
};

代码语言:javascript
复制
export const Breadcrumb = ({ className, ...rest }) => {
  const classes = getClasses(className);

  return (
    <Link to={props.path} className={classes} {...rest}>
      {props.children}
    </Link>
  );
};

因此,您需要在className所在的位置提取props道具,并为其他道具添加...rest

票数 1
EN

Stack Overflow用户

发布于 2022-07-11 10:57:35

我想您希望用其他通过道具传递的类扩展组件类。

如果我的理解是正确的,你可以这样做:

代码语言:javascript
复制
export const Breadcrumb = (props) => {
  const { className } = props;
  const classes = getClasses(className);

  return (
    <Link to={props.path} className={[classes, className].join(" ")]} 
    {...props}>
      {props.children}
    </Link>
  );
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72937258

复制
相关文章

相似问题

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