Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在React类组件中使用ResizeObserver

在React类组件中使用ResizeObserver
EN

Stack Overflow用户
提问于 2019-07-08 20:01:21
回答 2查看 10.9K关注 0票数 10

我在Chrome上使用React 15,并希望连接一个事件侦听器来检测对父容器的更改。在四处寻找选择后,我偶然发现了ResizeObserver,并且不确定如何让它在我的项目中工作。

目前,我正在将它放入我的构造函数中,但它似乎没有打印任何文本,并且我不确定要将什么放入observe打电话。

代码语言:javascript
运行
AI代码解释
复制
class MyComponent extends React.Component {
    constructor(props) {
        super(props);

        const resizeObserver = new ResizeObserver((entries) => {
            console.log("Hello World");
        });

        resizeObserver.observe(somethingGoesHere);
    }

    render() {
        return (
            
                
                

                
                

                
            
        );
    }
}

理想情况下,我也不想包装RealComponent在一个div把它给我div一个id。有没有办法RealComponent直接?

我的目标是观察对RealComponent但是MyComponent也很好。我应该在somethingGoesHere老虎机?

编辑:

为了让一些东西正常工作,我咬紧牙关把一个div标记周围RealComponent。然后我给它一个id。并更改了observe呼叫:

代码语言:javascript
运行
AI代码解释
复制
resizeObserver.observe(document.getElementById("myDivTag"));

但是,在运行这段代码时,我得到:

未捕获的TypeError: resizeObserver.observe不是一个函数

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-08 20:58:22

编辑:Davidicus的答案更完整,先看看

ResizeObserver不能进入构造函数,因为在组件生命周期的那个时间点上并不存在div。

我不认为你可以绕过额外的div,因为不管怎样,react组件都会缩减为html元素。

将此代码放入componentDidMount中,它应该可以工作:

代码语言:javascript
运行
AI代码解释
复制
componentDidMount() {
   const resizeObserver = new ResizeObserver((entries) => {
        console.log("Hello World");
   });

   resizeObserver.observe(document.getElementById("myDivTag"));
}
票数 15
EN

Stack Overflow用户

发布于 2020-02-28 20:41:17

ComponentDidMount将是设置观察者的最佳位置,但您也希望断开连接ComponentWillUnmount。

代码语言:javascript
运行
AI代码解释
复制
class MyComponent extends React.Component {
  resizeObserver = null;
  resizeElement = createRef();

  componentDidMount() {
    this.resizeObserver = new ResizeObserver((entries) => {
      // do things
    });

    this.resizeObserver.observe(this.resizeElement.current);
  }

  componentWillUnmount() {
    if (this.resizeObserver) {
      this.resizeObserver.disconnect();
    }
  }

  render() {
    return (
      
        ...
      
    );
  }
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56941843

复制
相关文章
python安装需要安装paramiko
1.最近手头有个脚本用于远程批量传输文件的。由于系统本身环境兼容不是很好,所以开始升级配置环境。
py3study
2020/01/10
1.6K0
初学 Python 需要安装哪些软件?
KDnuggets2018年的一个博客发起了一项投票:数据科学中最好用的Python IDE是什么? 本次调查共有1900多人参与,调查结果如下图所示。前5个选择是: Jupyter,57% PyCharm,35% Spyder,27% Visual Studio Code,21% Sublime Text,12%
猴子数据分析
2020/11/16
1.4K0
pycharm需要安装哪些库_python编程
2、许多博客推荐使用创建虚拟环境的方式,也就是下面图片的上面一种,项目中会有一个venv文件夹。后文是使用了virtualenv方式创建虚拟环境,也可以选择conda方式【更推荐,不用为每个项目创个虚拟环境,也避免用自己的python下太多可能版本冲突的包】。
全栈程序员站长
2022/09/27
1.3K0
pycharm需要安装哪些库_python编程
如何在jupyter中同时使用python2和3
如何在jupyter中同时使用python2和3? 由于我是通过anaconda来安装的Jupyter Notebook,所以首先需要解决Anaconda2(Python2)和Anaconda3(Python3)的共存。 只需要将Anaconda3的安装目录选在D:\Anaconda2\envs子目录下即可。详细安装教程请看这篇博文:http://blog.csdn.net/infin1te/article/details/50445217 安装完成之后,在CMD里面直接输入python会启动Python2
数据科学社区
2018/02/02
8.3K0
如何在jupyter中同时使用python2和3
数据科学工具 Jupyter Notebook 教程(二)
Jupyter Notebook 是一个把代码、图像、注释、公式和作图集于一处,实现可读性分析的交互式笔记本工具。借助所谓的内核(Kernel)的概念,Jupyter Notebook 可以同时支持包括R、python2、python3、Ruby 在内超过50多种不同编程环境。 基于 Kernel,Jupyter Notebook 可以支持的编程语言: (其实 Jupyter Notebook 可以支持的编程语言,远不止这几种。下图只是个不完全列表。) 说了那么多,开始今天的主题:如何在 Jupyter
企鹅号小编
2018/01/12
1.8K0
数据科学工具 Jupyter Notebook 教程(二)
Jupyter Notebook 下 import 第三方库,显示 no module xxx 【本质是环境没有切换过来】
 可以发现我们之前在jupyter添加的环境只是添加了一个空壳,并没有改变内核,使用的还是主环境的python。因此我们一定要在我们创建的环境中执行添加命令。
汀丶人工智能
2022/12/21
1.2K0
Jupyter Notebook 下 import 第三方库,显示 no module xxx 【本质是环境没有切换过来】
Jupyter Notebook中配置多版本Python
最新 Anaconda 中,默认安装 Python 3.8.3,因为某些原因需要使用 Python 3.7
yiyun
2022/04/01
4.8K0
Jupyter Notebook中配置多版本Python
Jupyter Notebook 同时安装Python2和Python3内核
如果Jupyter当前使用的是Python2,先使用以下命令检查pip的版本是否大于9.0:
SeanCheney
2019/02/26
2.2K0
Pycharm中利用Anaconda进行环境配置「建议收藏」
由于不同demo所利用的环境不同,因而大神们开发了Anaconda工具,其中已经安装好了很多包,并且使用conda来对这些进行管理。如此,便可以实现在电脑中存储多个互相不干扰的环境,使用编译器来分别利用这些环境创建不同的项目。
全栈程序员站长
2022/09/27
3.3K0
Pycharm中利用Anaconda进行环境配置「建议收藏」
jupyter notebook中使用新环境
1. 创建环境 创建:conda create -n 环境名 ,如, conda create -n py39 python=3.9 2.安装ipykernel,否则后报没有ipykernel pip install ipykernel 3.执行配置 python -m ipykernel install --name py39 可能出现报错 解决方案 在安装命令里添加–user即可解决,命令如下 python -m ipykernel install --user --name py39 附
学到老
2022/06/29
8360
jupyter notebook中使用新环境
jupyter notebook anaconda python2与python3 共用 [change kernel]
问题背景 在试图运行cs231n的.ipynb文件时,报错,发现它的支持类库都是用python2写的。于是就需要我将jupyter notebook的运行环境改为python2 解决步骤1:创建并激活python2环境,安装ipykernel Or using conda, create a Python 2 environment: conda create -n ipykernel_py2 python=2 ipykernel source activate ipykernel_py2
平凡的学生族
2019/05/25
6240
[ 机器学习 ] 关于Jupyter Notebook中pytorch模块import失败的问题
发现Miniconda(虚拟环境均适用)中安装的pytorch在Jupyter里面import失败
Hz_Sonne
2023/02/28
1.4K0
[ 机器学习 ] 关于Jupyter Notebook中pytorch模块import失败的问题
jupyter notebook 远程连接调试实录
最近使用了一下jupyter notebook搭配GPU服务器这套搭配,顿时打开了一个新天地,记录一下配置过程。
Python中文社区
2018/07/26
2.1K0
如何使用虚拟环境和Jupyter Notebook
本文讲解如何使用Python虚拟环境(venv)和Jupyter Notebook,介绍它们是什么、为什么、何时以及如何使用它们。
fanjy
2021/12/11
3.9K0
如何使用虚拟环境和Jupyter Notebook
点击加载更多

相似问题

运行带有Python3.10的单元格需要安装ipykernel

313

错误: ipykernel需要Python版本3.4或更高版本

21

运行具有Python3.9.5 64位的单元格需要安装ipykernel或需要更新

13

在“运行带有python 3.11的单元格需要ipykernel包”(在visio代码中)之后,"pip安装ipykernel升级“不起作用。

1212

anaconda环境与ipykernel安装顺序

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文