next.js 重构到scss模块后未应用SCSS样式

nqwrtyyt  于 2022-12-12  发布在  其他
关注(0)|答案(1)|浏览(198)

我正在重构一个应用程序,这样组件样式将从全局样式隔离到css模块。但是,我遇到了一个问题,样式不适用。
原始代码:

<div className={`explainer-callout-wrapper position-${callOutPosition}`}>

相关样式的代码:

.explainerCalloutWrapper {
  position: relative;

  @include media-breakpoint-up(md) {
    position: absolute;
    right: 0;
  }

  @include media-breakpoint-up(lg) {
    right: 0;
  }

  &.position1 {
    @include media-breakpoint-up(md) {
      top: 4rem;
    }

    @include media-breakpoint-up(lg) {
      top: 6rem;
    }
  }

  &.position2 {
    @include media-breakpoint-up(md) {
      top: 7rem;
    }

    @include media-breakpoint-up(lg) {
      top: 11rem;
    }
  }

  &.position3 {
    @include media-breakpoint-up(md) {
      top: 11.5rem;
    }

    @include media-breakpoint-up(lg) {
      top: 18rem;
    }
  }

  &.position4 {
    @include media-breakpoint-up(md) {
      top: 16rem;
    }

    @include media-breakpoint-up(lg) {
      top: 25.5rem;
    }
  }

  &.position5 {
    @include media-breakpoint-up(md) {
      top: 20.5rem;
    }

    @include media-breakpoint-up(lg) {
      top: 31.5rem;
    }
  }
}

${callOutPosition}通过props进入,以确定元素的位置并应用SCSS模块中的相关样式。
在原始代码中,当在普通桌面视图中时,样式应用&.position1中的类并应用top: 4rem;样式。
然而,在使用clsx库和css模块的重构代码中,position${callOutPosition}的后一个类没有应用上述样式。
下面是重构后的代码:

<div className={clsx(styles.explainerCalloutWrapper, `position-${callOutPosition}`)}>

我错过了什么还是这是错误的方法?

bnl4lu3b

bnl4lu3b1#

我找到了解决办法。

<div className={clsx(styles.explainerCalloutWrapper, styles[`position${callOutPosition}`])}>

相关问题