Reactjs 装载后获取组件宽度
我使用react传单地图显示自定义地图(非地理) 此外,贴图大小是动态的,我需要根据组件和贴图大小之间的比率来计算缩放级别Reactjs 装载后获取组件宽度,reactjs,width,react-leaflet,Reactjs,Width,React Leaflet,我使用react传单地图显示自定义地图(非地理) 此外,贴图大小是动态的,我需要根据组件和贴图大小之间的比率来计算缩放级别 是否有一种计算已加载组件大小的本地方法?您可以获得对组件底层DOM元素的引用。从那里可以获得所需的渲染大小信息。有关详细信息,请参见react文档中的 类应用程序扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ clientRect:{}, }; } ref=node=>node&&this.setState({clientRe
是否有一种计算已加载组件大小的本地方法?您可以获得对组件底层DOM元素的引用。从那里可以获得所需的渲染大小信息。有关详细信息,请参见react文档中的
类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
clientRect:{},
};
}
ref=node=>node&&this.setState({clientRect:node.getBoundingClientRect()});
render(){
返回(
{JSON.stringify(this.state.clientRect)}
);
}
}
ReactDOM.render(,document.getElementById('root'))代码>
您可以获得对组件底层DOM元素的引用。从那里可以获得所需的渲染大小信息。有关详细信息,请参见react文档中的
类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
clientRect:{},
};
}
ref=node=>node&&this.setState({clientRect:node.getBoundingClientRect()});
render(){
返回(
{JSON.stringify(this.state.clientRect)}
);
}
}
ReactDOM.render(,document.getElementById('root'))代码>
我会将您的组件包装在一个div
中,该div将包裹在您的react传单上
<div
style={{display: 'inline'}}
>
... your leaflet
</div>
我会将您的组件封装在一个div
中,该div围绕着您的react传单
<div
style={{display: 'inline'}}
>
... your leaflet
</div>
你可以做的是把你的组件放在一个div
中,以100%的宽度和高度作为样式,然后检索实际尺寸
因此,在包装器组件中,您将有:
getDimensions = () => {
if (!this.contentDiv) return;
const rect = this.contentDiv.getBoundingClientRect();
console.log(rect.width);
console.log(rect.height);
};
在渲染方法中
<div
ref={ref => {
this.contentDiv = ref;
}}
style={{ width: "100%", height: "100%" }}
>
{content}
</div>
{
this.contentDiv=ref;
}}
样式={{宽度:“100%”,高度:“100%”
>
{content}
您可以做的是将您的组件放置在一个div
中,以100%的宽度和高度作为样式,然后检索实际尺寸
因此,在包装器组件中,您将有:
getDimensions = () => {
if (!this.contentDiv) return;
const rect = this.contentDiv.getBoundingClientRect();
console.log(rect.width);
console.log(rect.height);
};
在渲染方法中
<div
ref={ref => {
this.contentDiv = ref;
}}
style={{ width: "100%", height: "100%" }}
>
{content}
</div>
{
this.contentDiv=ref;
}}
样式={{宽度:“100%”,高度:“100%”
>
{content}
假设您使用全屏地图,这可能会对您有所帮助。不,它将在componet中呈现页面上的地图。但我会查一下这个链接。你当然可以在一个div里找到地图?然后得到这样的维度:var div=$(“#myDiv”);(“.height():”+div.height());除非不可能,否则您可以使用react度量,请检查以下内容:假设您使用全屏映射,这可能会对您有所帮助。不,它将在componet中呈现在页面上的映射。但我会查一下这个链接。你当然可以在一个div里找到地图?然后得到这样的维度:var div=$(“#myDiv”);(“.height():”+div.height());除非不可能,否则您可以使用react度量,请查看以下内容: