如何在componentDidMount()中获取ReactJS元素?

时间:2016-12-30 15:38:20

标签: reactjs

我有一个特定React类的4个实例。在componentDidMount()之后我想存储每个实例的y位置。

如何处理渲染元素?我不能使用classname,因为我有4个具有不同位置的同一个类的元素。

我的ReactJS组件:

const Col = React.createClass({
    componentDidMount: function() {
        //here address the actual rendered col-instance
    },

    render() {
        return (
            <div className='col'>
            </div>
        );
    }
});

1 个答案:

答案 0 :(得分:10)

使用refs

首先,在每个JSX cols元素上连接ref属性。然后,在ref方法中使用此componentDidMount来访问组件的DOM节点(实际的HTMLElement)。最后,获取元素的位置/偏移量或您需要的任何其他内容。

const Col = React.createClass({
    componentDidMount: function() {
        // this.refs.col1 is the actual DOM element,
        // so you can access it's position / offset or whatever
        const offsetTop = this.refs.col1.offsetTop;
    },

    render() {
        return (
            <div className="col" ref="col1">
            </div>
        );
    }
});

PS:我不确定你说元素y的位置是什么意思。无论如何,一旦你知道如何获得DOM元素(this.refs.col1),就可以使用你需要的javascript to retrieve the position