reactjs 当我使用CSS resize属性调整div容器的大小时,如何在react中获取它的高度和宽度

cl25kdpy  于 2023-02-08  发布在  React
关注(0)|答案(1)|浏览(266)

当我使用CSS resize属性调整div容器的大小时,在react中的div容器的高度和宽度我尝试过这个方法,但是我得到错误

import React, { useState, useRef, useEffect } from 'react';
const TextAreaWrapper = () => {
  const [dimensions, setDimensions] = useState({ height: 0, width: 0 });
  const textareaRef = useRef(null);

  useEffect(() => {
    const textarea = textareaRef.current;

    const handleResize = () => {
        console.log('Hello world');
      setDimensions({
        height: textarea.offsetHeight,
        width: textarea.offsetWidth,
      });
    };
    textarea.addEventListener('resize', handleResize);

    return () => {
      textarea.removeEventListener('resize', handleResize);
    };
  }, []);
  return (
    <div>
      <textarea ref={textareaRef} />
      <p>Height: {dimensions.height}</p>
      <p>Width: {dimensions.width}</p>
    </div>
  );
};
export default TextAreaWrapper;
edqdpe6u

edqdpe6u1#

尝试以下操作(检查ref是否不为空):

useEffect(() => {
    const textarea = textareaRef.current;
    
    if (!textarea) {
       return;
    }

    const handleResize = () => {
      setDimensions({
        height: textarea.offsetHeight,
        width: textarea.offsetWidth,
      });
    };

    textarea.addEventListener('resize', handleResize);

    return () => {
      textarea.removeEventListener('resize', handleResize);
    };
  }, [textareaRef.current]);

相关问题