为了账号安全,请及时绑定邮箱和手机立即绑定

react 如何实现setInterval每过一秒在html中添加一个div ?

react 如何实现setInterval每过一秒在html中添加一个div ?

慕虎7371278 2019-03-12 17:18:58
react 如何实现setInterval每过一秒在html中添加一个div ?现在有一个需求是要每过几秒在界面添加一个盒子 之前没写过react 函数应该写在componentDidMount()里面吧求大佬给个思路~现在实现了 不知道怎么停下来 我是真滴菜
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

class App extends Component{

        constructor(props){

            super(props);

            this.state={

                arr:[],

                index:0

            }

            this.handle=null;

            this.stopClickHandle=this.stopClickHandle.bind(this);

        }

        stopClickHandle(){

            if(this.handle){

                clearInterval(this.handle);

                this.handle=null;

            }

        }

        componentDidMount(){

            const me=this;

            this.handle=setInterval(function(){

                me.setState(function(preState){

                    let arr=[preState.index++,...preState.arr];

                    return {arr};

                });

                if(me.state.index == me.props.max){

                    me.stopClickHandle();

                }

            },1000);

        }

        render(){

            let arr=this.state.arr;

            arr=arr.map(function(item){

                return (<div>{item}</div>)

            });

            return(

                <div>

                    {arr}

                </div>

            )

        }

    }

    ReactDOM.render(<App max={5} />,document.body);


查看完整回答
反对 回复 2019-03-18
?
慕村225694

TA贡献1880条经验 获得超4个赞

import React from "react";

class Clock extends React.Component {

  constructor(props) {

    super(props);

    this.state = {arr:["div"]};

  }


  componentDidMount() {

    this.timeID = setInterval(

      ()=> this.tick(),

      1000

    )

  }


  componentWillUnmount(){

    clearInterval(this.timeID)

  }


  tick() {

    // 5 个 停止计时器

     if(this.state.arr.length ===5) {

      clearInterval(this.timeID);

      return;

    }

     this.setState((prevState,props) => ({

       arr:[...prevState.arr,props.add]

     }))

  }


  render(){

    return (

      this.state.arr.map((item,idx)=> (

         <div>

            <h1>{item}</h1>

         </div>

      ))

    )

  }

}


ReactDOM.render(

  <Clock add={"div"}/>,

  document.getElementById('root')

);

具体可以看下文档


查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 1548 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信