当前位置:首页 > React

react如何获取可编辑div的内容

2026-01-26 07:22:26React

获取可编辑 div 内容的方法

在 React 中获取可编辑 div(通过 contentEditable 属性实现)的内容,可以通过以下几种方式实现:

使用 onInputonBlur 事件

通过监听 onInputonBlur 事件,可以直接从事件对象或 DOM 节点中获取内容。

react如何获取可编辑div的内容

import React, { useState } from 'react';

function EditableDiv() {
  const [content, setContent] = useState('');

  const handleInput = (e) => {
    setContent(e.currentTarget.innerHTML);
  };

  return (
    <div
      contentEditable
      onInput={handleInput}
      dangerouslySetInnerHTML={{ __html: content }}
    />
  );
}

使用 ref 直接访问 DOM

通过 useRef 钩子直接访问 DOM 节点,可以随时获取或修改内容。

react如何获取可编辑div的内容

import React, { useRef } from 'react';

function EditableDiv() {
  const editableRef = useRef(null);

  const getContent = () => {
    console.log(editableRef.current.innerHTML);
  };

  return (
    <div>
      <div
        contentEditable
        ref={editableRef}
        dangerouslySetInnerHTML={{ __html: '初始内容' }}
      />
      <button onClick={getContent}>获取内容</button>
    </div>
  );
}

结合 useStateuseEffect

如果需要同步内容到状态,可以结合 useStateuseEffect 实现。

import React, { useState, useEffect, useRef } from 'react';

function EditableDiv() {
  const [content, setContent] = useState('初始内容');
  const editableRef = useRef(null);

  useEffect(() => {
    if (editableRef.current) {
      editableRef.current.innerHTML = content;
    }
  }, [content]);

  const handleInput = () => {
    setContent(editableRef.current.innerHTML);
  };

  return (
    <div
      contentEditable
      ref={editableRef}
      onInput={handleInput}
    />
  );
}

处理纯文本内容

如果只需要纯文本内容,可以通过 innerTexttextContent 获取。

const handleInput = (e) => {
  console.log(e.currentTarget.innerText);
};

注意事项

  • 使用 contentEditable 时,直接操作 DOM 可能会导致 React 的状态与实际 DOM 不同步,建议通过事件或 ref 显式更新状态。
  • dangerouslySetInnerHTML 用于设置初始内容,但需注意 XSS 安全风险。
  • 对于复杂需求(如富文本编辑器),建议使用现成的库(如 draft-jsslate)。

标签: 编辑内容
分享给朋友:

相关文章

vue编辑功能怎么实现

vue编辑功能怎么实现

Vue 编辑功能的实现方法 1. 数据绑定与表单处理 使用 v-model 实现双向数据绑定,将表单输入与 Vue 实例的数据属性关联。例如: <template> <i…

vue 实现双击编辑

vue 实现双击编辑

双击编辑的实现思路 在Vue中实现双击编辑功能,可以通过监听元素的dblclick事件,切换显示模式和编辑模式。通常需要维护一个isEditing状态变量,用于控制显示文本或输入框。 基本实现步骤…

uniapp 内容列表

uniapp 内容列表

uniapp 内容列表的实现方法 在uniapp中实现内容列表通常需要结合组件和数据绑定。以下是一个常见的方法: 模板部分 <template> <view class="c…

vue双击实现编辑

vue双击实现编辑

实现双击编辑功能的步骤 在Vue中实现双击编辑功能,可以通过监听双击事件并切换显示状态来完成。以下是一个完整的实现方法: 监听双击事件 使用@dblclick指令监听元素的双击事件,触发编辑模式:…

vue 实现pdf编辑

vue 实现pdf编辑

在Vue中实现PDF编辑功能,通常需要结合第三方库或服务。以下是几种常见的实现方法: 使用pdf-lib库 pdf-lib是一个纯JavaScript库,支持在浏览器和Node.js中创建和修改PD…

vue实现画布编辑

vue实现画布编辑

Vue 实现画布编辑 使用 HTML5 Canvas 和 Vue 结合 在 Vue 中可以通过封装 HTML5 Canvas 实现画布编辑功能。创建一个 Vue 组件,在 mounted 钩子中初始化…