reactjs - 使 div 可编辑并以表单形式捕获值,就好像它是文本区域一样
问题描述
我只是在挑战我的新反应技能并遇到一些问题。
我正在尝试使 div 可编辑以替换表单中的 textarea。我在尝试捕获输入的数据时遇到问题。
import React, { useState } from "react";
function CreateNotes(params) {
const [note, setNote] = useState({
title: "",
content: ""
});
function handleChange(event) {
const {name, value} = event.target;
setNote(prevValue => {
return ({
...prevValue,
[name]: value
})
})
}
return <div>
<form action="">
<input
name="title"
type="text"
placeholder="Titre"
value={note.title}
onChange={handleChange}
/>
<div
onTextArea="true"
name="content"
contentEditable="true"
ariaMultiline="true"
ariaLabel="Take a note"
value={note.content}
onClick={handleChange}
></div>
</form>
</div>
}
export default CreateNotes;
即使输入了某些内容,div 也会变为未定义。
解决方案
我建议使用预先构建的插件react-contenteditable。我发现自己正在尝试完全按照您的方式做,并且这个插件执行得非常好。如果您为了学习而想理解它,可以研究源代码。
推荐阅读
- android - Flutter:运行 Android 应用程序的发布版本时引发缺少插件异常
- python - 无法从网站中提取纬度/经度
- javascript - Vue Storefront核心模块如何扩展
- events - 操作系统上下文中的中断驱动与事件驱动
- python - PyQtGraph 实时绘制多行数据
- android - Flutter中如何实现本地通知?
- excel - 基于时间(军事时间)和日期的颜色条件格式
- bash - 所以我改变了我的脚本,找到两个数字的乘积,在用户最大值以下,现在发生了这种情况
- reactjs - 旧版上下文 API 使用 react-router-dom 反应
- typescript - 如何让 typescript 对象属性接受数组(对象)或对象的联合?