我有一个特定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>
);
}
});
答案 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。