Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面刷新中,在react中调用了哪个生命周期方法?_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 在页面刷新中,在react中调用了哪个生命周期方法?

Javascript 在页面刷新中,在react中调用了哪个生命周期方法?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我有一个包含componentA的页面,在componentDidMount循环方法中,我正在更新触发一些动画的状态。但是如果我刷新页面,动画就不会播放。请让我知道如何解决这个问题。下面是我的组件代码 import React from 'react'; import { findDOMNode } from 'react-dom'; import Nav from "../nav/nav-component"; class Mylist extends React.Component{ c

我有一个包含componentA的页面,在componentDidMount循环方法中,我正在更新触发一些动画的状态。但是如果我刷新页面,动画就不会播放。请让我知道如何解决这个问题。下面是我的组件代码

import React from 'react';
import { findDOMNode } from 'react-dom';
import Nav from "../nav/nav-component";
class Mylist extends React.Component{
  constructor(props) {
    super(props);
    this.handleScroll = this.handleScroll.bind(this);
    this.state = { animationClass: '' , transform : 12  };
  }
  componentDidMount() {
      window.addEventListener('scroll', this.handleScroll);
      this.setState({animationClass:'animate'});
  };
  componentDidUpdate() {
      //this.setState({animationClass:''});
  };

  componentWillUnmount() {
      window.removeEventListener('scroll', this.handleScroll);
      this.setState({animationClass:''});
  };
  handleScroll(event){
    const scrollTop = event.srcElement.body.scrollTop,
          ele = findDOMNode(this.refs.toggle), // how to get dom element in react
          childElements = ele.children,
          componentTopPos = ele.getBoundingClientRect();
    //itemTranslate = Math.min(0, scrollTop/3 - 60);

    console.log("scrollTop",scrollTop);
    console.log(childElements);
    console.log("componentTopPos",componentTopPos);

     console.log(this);
    this.setState({
      transform: "dsfdf"
    });
  }
  render(){
    return ( 
      <div className={'header '+this.state.animationClass}>
      <Nav />
      </div> 
    );
  }
}
export default Mylist;
从“React”导入React;
从'react dom'导入{findDOMNode};
从“./Nav/Nav组件”导入Nav;
类Mylist扩展了React.Component{
建造师(道具){
超级(道具);
this.handleScroll=this.handleScroll.bind(this);
this.state={animationClass:'',transform:12};
}
componentDidMount(){
window.addEventListener('scroll',this.handleScroll);
this.setState({animationClass:'animate'});
};
componentDidUpdate(){
//this.setState({animationClass:'});
};
组件将卸载(){
window.removeEventListener('scroll',this.handleScroll);
this.setState({animationClass:'});
};
handleScroll(活动){
const scrollTop=event.srcmelement.body.scrollTop,
ele=findDOMNode(this.refs.toggle),//如何在react中获取dom元素
childElements=ele.children,
componentTopPos=ele.getBoundingClientRect();
//itemTranslate=Math.min(0,滚动顶部/3-60);
log(“scrollTop”,scrollTop);
console.log(childElements);
console.log(“componentTopPos”,componentTopPos);
console.log(this);
这是我的国家({
转换:“dsfdf”
});
}
render(){
报税表(
);
}
}
导出默认Mylist;

请记住,componentDidMount只调用一次。刷新页面的次数无关紧要。不会再次调用该方法。在我看来,播放动画的更好方法是在您的本地州设置一个标志,例如“playAnimation:true”,在播放动画后将您的州设置为false。刷新时,状态将再次变为真,动画将再次播放。希望我能帮上忙。

页面根本不滚动,还是在没有动画的情况下跳转到目标位置?也许它运行得太早了,页面内容还没有一个高度或什么的?我也在寻找答案,有人吗?componentDIdMount被调用一次,componentWillUpdate被弃用