Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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
Reactjs 装载后获取组件宽度_Reactjs_Width_React Leaflet - Fatal编程技术网

Reactjs 装载后获取组件宽度

Reactjs 装载后获取组件宽度,reactjs,width,react-leaflet,Reactjs,Width,React Leaflet,我使用react传单地图显示自定义地图(非地理) 此外,贴图大小是动态的,我需要根据组件和贴图大小之间的比率来计算缩放级别 是否有一种计算已加载组件大小的本地方法?您可以获得对组件底层DOM元素的引用。从那里可以获得所需的渲染大小信息。有关详细信息,请参见react文档中的 类应用程序扩展了React.Component{ 建造师(道具){ 超级(道具); 此.state={ clientRect:{}, }; } ref=node=>node&&this.setState({clientRe

我使用react传单地图显示自定义地图(非地理) 此外,贴图大小是动态的,我需要根据组件和贴图大小之间的比率来计算缩放级别


是否有一种计算已加载组件大小的本地方法?

您可以获得对组件底层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度量,请查看以下内容: