首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React挂钩: contentEditable未更新

React挂钩: contentEditable未更新
EN

Stack Overflow用户
提问于 2020-08-19 23:57:37
回答 2查看 1.2K关注 0票数 1
代码语言:javascript
运行
复制
function transformation(data) {
  data = data + "it works";
  return data;
}

export default function App() {
  const [value, setValue] = useState("");
  const handleChanges = (event) => {
    setValue(event.currentTarget.innerHTML);
  };
  return (
    <div
      contentEditable
      onChange={handleChanges}
      html={transformation(value)}
    />
  );
}

为什么只要在div中写了一些东西,onChange就不能工作?我不能启动函数“转换”。效果很好。这似乎是contentEditable的一个问题。我要求这是用钩子来完成的。

EN

回答 2

Stack Overflow用户

发布于 2020-08-20 00:40:08

您可以使用react-contenteditable组件,我认为它将完成您正在寻找的功能。以下代码是已实现的应用程序:

代码语言:javascript
运行
复制
import React, { useState } from "react";
import ContentEditable from "react-contenteditable";
import "./styles.css";

function transformation(data) {
  const test = `${data} It works`;
  return test;
}

export default function App() {
  const [value, setValue] = useState("");

  const handleChanges = (event) => {
    setValue(event.target.value);
  };

  return (
    <ContentEditable
      style={{ border: "2px solid black" }}
      innerRef={this.contentEditable}
      onChange={handleChanges}
      html={transformation(value)}
    />
  );
}

您可以在以下方面进行尝试:https://codesandbox.io/s/awesome-breeze-6rmih?file=/src/App.js:0-549

您可以在此处阅读组件的文档:https://www.npmjs.com/package/react-contenteditable

票数 1
EN

Stack Overflow用户

发布于 2020-08-20 00:15:44

onChange属性只适用于表单字段元素,如输入、选择、文本区域等。只需将div更改为任何表单元素,就可以正常工作。:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63490823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档