Javascript 使反应元素偏移
在react中,当我在componentDidMount中获取元素的offsetTop时,它与在componentDidUpdate()中调用相同元素时的offsetTop值不同。为什么呢?我认为componentDidMount是在呈现之后调用的,所以DOM元素被放置在页面中,所以offsetTop值应该是正确的Javascript 使反应元素偏移,javascript,reactjs,Javascript,Reactjs,在react中,当我在componentDidMount中获取元素的offsetTop时,它与在componentDidUpdate()中调用相同元素时的offsetTop值不同。为什么呢?我认为componentDidMount是在呈现之后调用的,所以DOM元素被放置在页面中,所以offsetTop值应该是正确的 class Index extends React.Component { ... render() { return ( &
class Index extends React.Component {
...
render() {
return (
<div className="site-wrapper">
<TopHeader />
<IntroSection />
</div>
);
}
}
class TopHeader extends React.Component {
...
componentDidMount() {
var rect = ReactDOM.findDOMNode(this).offsetTop;
console.log(rect);
}
}
class IntroSection extends React.Component {
...
componentDidMount() {
var rect = ReactDOM.findDOMNode(this).offsetTop;
console.log(rect);
}
}
类索引扩展了React.Component{
...
render(){
返回(
);
}
}
类TopHeader扩展了React.Component{
...
componentDidMount(){
var rect=ReactDOM.findDOMNode(this.offsetTop);
console.log(rect);
}
}
类IntroSection扩展了React.Component{
...
componentDidMount(){
var rect=ReactDOM.findDOMNode(this.offsetTop);
console.log(rect);
}
}
组件didmount
只调用一次。但是,组件接收到的每个更新都会调用componentdiddupdate
,即使是通过state或props
然后,对于这两种生命周期方法,我们建议将offsetTop持久化为组件状态
componentDidMount
只调用一次。但是,组件接收到的每个更新都会调用componentdiddupdate
,即使是通过state或props
然后,对于这两种生命周期方法,我们建议将offsetTop持久化为组件状态 是的,我知道,我希望每个元素的偏移量只能得到一次,因为它们不会随着时间的推移而改变,以便将它们包含在
componentdiddupdate
中以减少开销。是的,我知道,我希望每个元素的偏移量只能得到一次,因为它们不会随着时间的推移而改变,所以可以将它们包含在componentdiddupdate
中以减少开销。