【问题标题】:Material-UI: TextField: react-addons-css-transition-group breaks with multiline TextFieldsMaterial-UI:TextField:react-addons-css-transition-group 与多行 TextFields 中断
【发布时间】:2020-06-21 02:55:24
【问题描述】:

如果带有多行的TextField 包裹在react-addons-css-transition-group 中,则会中断显示转换。有什么办法可以妥善处理吗?

这是我的代码:https://codesandbox.io/s/material-demo-v4byd

如果您删除 multiline 标记,则转换工作。

编辑:我已将代码调整为 Fraction 的答案,但仍然无法正常工作:https://codesandbox.io/s/material-demo-vpde6

EDIT2:第二个演示的工作示例:https://codesandbox.io/s/material-demo-1kdyl

【问题讨论】:

    标签: javascript reactjs material-ui


    【解决方案1】:

    看看下面的例子,我使用了react-transition-group,因为来自react-addons-css-transition-group的文档说:

    此包中的代码已移动。我们建议您改用 react-transition-group 中的 CSSTransitionGroup

    您可以将CSSTransition 代替ReactCSSTransitionGroup 用于一个项目,或者与TransitionGroup 组合用于CSSTransition 组件列表:

    import { CSSTransition } from "react-transition-group";
    
    ...
    
    <CSSTransition
      in={this.state.show}
      timeout={400}
      classNames="Test"
      unmountOnExit
    >
      {this.renderTextField()}
    </CSSTransition>
    

    您必须从renderTextField 中删除if (!this.state.show) { return null; },因为CSSTransition 需要一个孩子。

    test.cssopacity 属性不是强制性的)

    .TestWrapper {
      position: relative;
      left: 0px;
    }
    
    .Test-enter {
      left: 100px;
      opacity: 0;
    }
    
    .Test-enter-active {
      opacity: 1;
      left: 0px;
      transition: left 400ms, opacity 400ms;
    }
    
    .Test-exit {
      opacity: 1;
      left: 0px;
    }
    
    .Test-exit-active {
      opacity: 0;
      left: 100px;
      transition: left 400ms, opacity 400ms;
    }
    

    工作示例

    【讨论】:

    • 哦,伙计,我应该只阅读页面其余部分的注释,谢谢!
    • 这太疯狂了。我已经调整了我的开发代码,但它仍然无法正常工作。 :( 我创建了一个新的 CodeSandbox:codesandbox.io/s/material-demo-vpde6
    • 我提供的代码没有问题。第二个演示的工作示例:codesandbox.io/s/…
    • 我现在明白了:提供过渡的位置很重要。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2019-05-06
    • 2015-12-09
    • 1970-01-01
    • 2018-05-11
    • 2019-03-20
    • 2018-09-04
    • 2018-04-15
    相关资源
    最近更新 更多