首页 > 解决方案 > 为什么 React-Semantic-UI 转换不为组件设置动画?

问题描述

我有一个Modal警告组件。对于 Modal 动画,我使用了Transitionfrom semantic-ui-react。但是只有少数动画(pulse, bounce, flash)在工作,而且只有在安装组件时才有效,而在我关闭Modal. 此外,该duration物业也无法正常工作。

class Alert extends React.Component {
  state = {
    open: true
  };

  close = () => {
    this.setState({
      open: false
    });
  };

  render() {
    const { open } = this.state;
    return (
      <Transition animation="fade" duration={1000} visible={open}>
        <Modal
          size="mini"
          closeOnDimmerClick={false}
          closeOnEscape={false}
          open={this.state.open}
          onClose={this.close}>

          <Modal.Content>
            <p>
              Hello user
            </p>
          </Modal.Content>
          <Modal.Actions>
            <Button color="blue" onClick={this.close}>
              Ok
            </Button>
          </Modal.Actions>
        </Modal>
      </Transition>
    );
  }
}

为什么会有这种奇怪的行为?我究竟做错了什么?

标签: reactjssemantic-ui-reactreact-transition-group

解决方案


Modal是在动画之前卸载方式Transition,一种方法是让 Transition 卸载 Modal:

class Alert extends React.Component {
  state = {
    open: true
  };

  close = () => {
    this.setState({
      open: false
    });
  };

  render() {
    const { open } = this.state;
    return (
      <Transition
        animation="fade"
        duration={1000}
        unmountOnHide={true}
        visible={open}
      >
        <Modal
          size="mini"
          closeOnDimmerClick={false}
          closeOnEscape={false}
          open={true}
          onClose={this.close}
        >
          <Modal.Content>
            <p>Hello user</p>
          </Modal.Content>
          <Modal.Actions>
            <Button color="blue" onClick={this.close}>
              Ok
            </Button>
          </Modal.Actions>
        </Modal>
      </Transition>
    );
  }
}

编辑提醒

我希望它有帮助!


推荐阅读