【问题标题】:(React) CSSTransition with css modules(React) 带有 CSS 模块的 CSSTransition
【发布时间】:2019-05-23 13:08:33
【问题描述】:

我正在尝试在我的项目中将 CSSTransition 实现为模式。问题是我正在使用 css 模块。

我的模态渲染方法

render() {
        return (
            <Aux>
                <Backdrop
                    show={this.props.show}
                    clicked={this.props.modalClosed}/>
                <CSSTransition
                    in={this.props.show}
                    timeout={1000}
                    mountOnEnter
                    unmountOnExit
                    classNames={?}
                >
                    <div
                        className={classes.Modal}
                    >
                        {this.props.children}
                    </div>
                </CSSTransition>
            </Aux>
        )
    }

我的 Modal.css

    .fade-enter {

    }

    .fade-enter-active {
        animation:openModal 0.4s ease-out forwards;
    }

    .fade-exit{

    }

    .fade-exit-active{
        animation: closeModal 0.4s ease-out forwards;
    }

我应该将什么传递给 CSSTransition 组件中的 classNames 属性以使其工作?

【问题讨论】:

    标签: css reactjs css-transitions


    【解决方案1】:

    JSX:

      <CSSTransition in={focused} timeout={500} classNames={{
        enterActive: styles.MyClassEnterActive,
        enterDone: styles.MyClassEnterDone,
        exitActive: styles.MyClassExit,
        exitDone: styles.MyClassExitActive
      }}>
        <span className={styles.MyClass}>animated</span>
      </CSSTransition>
    

    CSS 模块:

    .MyClass {
      position: absolute;
      left: 5px;
    }
    .MyClassEnterActive {
      left: 15px;
      transition: left 500ms;
    }
    .MyClassEnterDone {
      left: 15px;
    }
    .MyClassExit {
      left: 15px;
    }
    .MyClassExitActive {
      left: 5px;
      transition: left 500ms;
    }
    

    感谢Lionel

    【讨论】:

      【解决方案2】:

      通过输入这样的类解决:

          render() {
              return (
                  <Aux>
                      <Backdrop
                          show={this.props.show}
                          clicked={this.props.modalClosed}/>
                      <CSSTransition
                          in={this.props.show}
                          timeout={1000}
                          mountOnEnter
                          unmountOnExit
                          classNames={{
                              enterActive: classes["fade-enter-active"],
                              exitActive:classes["fade-exit-active"]
                          }}
                      >
                          <div
                              className={classes.Modal}
                          >
                              {this.props.children}
                          </div>
                      </CSSTransition>
                  </Aux>
              )
          }
      

      【讨论】:

      • 当我尝试这个时,我在包装的 div 的类上得到“未定义”。
      • 你是否在你的 Modal.css 中定义了 .Modal 类?
      猜你喜欢
      • 2018-01-18
      • 2019-03-09
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 2019-04-11
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多