javascript - react onChange 不从 Div 触发

标签 javascript html css reactjs

我正在开发一个应用程序,该应用程序具有可在需要时生成文本区域的可重用组件。该组件从其父级接收一个 onChange 函数作为 Prop , Prop 名称为 onChange。现有代码使用具有一致高度的 textarea 元素,并且此 textarea 会毫无问题地触发 onChange 函数。

我现在正在努力让区域垂直增长,而不是添加溢出栏,并将 textarea 标签替换为 div,这允许自动增长按预期工作。但是,div 标签将不再触发 textarea 元素毫无问题地触发的 onChange Prop 。我能够确认 onChange Prop 具有相同的功能,但我很困惑为什么它不起作用。我想知道我的代码中是否缺少某些东西,或者我是否误解了 onChange 函数在 React 中的工作方式。我已经粘贴了原始代码和我对更新后的代码应该是什么样子的最佳猜测,尽管我已经尝试对 div 进行多次更改。

提前感谢您对此提供的任何帮助!

原始文本区域代码:

<textarea className={textAreaStyle} {...textareaProps} rows={rows} />

更新的 div 代码:

      <div
        className={textAreaStyle}
        rows={rows}
        contentEditable="true"
        {...textareaProps}
        onChange={props.onChange}
      >            
        {value}
      </div>

更新 1:我已经尝试用 onInput={props.onChange} 替换 onChange={props.onChange} 行,现在函数被调用了,但实际状态并未更新。看看我是否可以修复状态未更新以解决此问题。

最佳答案

Contenteditable 行为和事件不同于 Texarea 元素,因此我建议查看开箱即用的工作组件,例如:

https://github.com/lovasoa/react-contenteditable

如果您正在寻找文本区域的自动调整大小,您可以依赖 UI Kit,例如 Semantic UI React。

如果您正在寻找自定义解决方案,仍然可以找到有关主题的完整答案:

React.js: onChange event for contentEditable

关于javascript - react onChange 不从 Div 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52408603/

相关文章:

javascript - 禁用 JavaScript SPA 的 "enter"和反向链接

javascript - 为RPG游戏制作一个HTML5游戏框架

javascript - jquery .each() 只做最后一个元素

javascript - 即使具有相同的数据类型,也无法使用数据属性扩展 Typescript 中的接口(interface)

css - 使用 CSS 在包含的 div 上显示两个带有背景图像的 div

javascript - 如何让一些词根据更多的条件消失和出现?

jquery - 我的一些元素通过 appendTo() 通过我的粘性页脚

javascript - 代码在 jsfiddle 中有效,但在我的应用程序中无效

html - li 元素之间的小空白

html - 无法打印背景颜色(css 解决方案)?