首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在类中使用超时的React Hooks

在类中使用超时的React Hooks
EN

Stack Overflow用户
提问于 2020-05-23 17:05:06
回答 2查看 104关注 0票数 0

我对React很陌生...我有窗口显示的页面,延迟很小..

它是用Hooks制作的:

代码语言:javascript
运行
复制
export default function LoginPage() { 
    const [cardAnimaton, setCardAnimation] = React.useState('cardHidden');
    setTimeout(function() {
        setCardAnimation('');
  }, 700);

  <form>
  <Card login className={classes[cardAnimaton]}>

现在,我希望在该页面中使用类,并希望保留相同的效果。

所以我试着这样做:

代码语言:javascript
运行
复制
export default class LoginPage extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            cardHidden: true,
        };
    }
    componentDidMount() {
        this.timeout = setTimeout(() => {
            this.setCardAnimation('');
        }, 700);
    }
    setCardAnimation = () => {
        this.cardAnimaton({ cardHidden: false });
    };

我不知道。卡在那里了..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-23 18:12:33

你只需要在componentDidMount中设置你的cardHidden: false,然后你就可以基于cardHidden状态添加动画了。

这是一个工作演示,我使用cardHidden状态在屏幕上显示或隐藏不同的文本,您可以使用此方法添加不同的动画。

只需单击Run code snippet即可查看其工作原理

代码语言:javascript
运行
复制
class LoginPage extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            cardHidden: true,
        };
    }
    componentDidMount() {
        this.timeout = setTimeout(() => {
            this.setState({
              cardHidden: false
            });
        }, 700);
    }
    
    render() {
      if(this.state.cardHidden){
        return <div>I'm Hidden</div>
      } else {
        return <div>Haha, I'm Visible</div>
      }
    }
}

const rootDiv = document.getElementById('root');

ReactDOM.render(<LoginPage />, rootDiv);
代码语言:javascript
运行
复制
<div id="root"></div> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script>

票数 0
EN

Stack Overflow用户

发布于 2020-05-23 17:11:43

在基于类的组件中,您需要使用this.setState来更新状态。

代码语言:javascript
运行
复制
export default class LoginPage extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            cardHidden: true,
        };
    }
    componentDidMount() {
        this.timeout = setTimeout(() => {
            this.setState({ cardHidden: false });
        }, 700);
    }
...

检查https://reactjs.org/docs/react-component.html#setstate

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61969725

复制
相关文章

相似问题

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