Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 使反应元素偏移_Javascript_Reactjs - Fatal编程技术网

Javascript 使反应元素偏移

Javascript 使反应元素偏移,javascript,reactjs,Javascript,Reactjs,在react中,当我在componentDidMount中获取元素的offsetTop时,它与在componentDidUpdate()中调用相同元素时的offsetTop值不同。为什么呢?我认为componentDidMount是在呈现之后调用的,所以DOM元素被放置在页面中,所以offsetTop值应该是正确的 class Index extends React.Component { ... render() { return ( &

在react中,当我在componentDidMount中获取元素的offsetTop时,它与在componentDidUpdate()中调用相同元素时的offsetTop值不同。为什么呢?我认为componentDidMount是在呈现之后调用的,所以DOM元素被放置在页面中,所以offsetTop值应该是正确的

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
中以减少开销。