Jodit-react onChange回调报undefined property 'name'错误
问题根源
JoditEditor 未遵循原生HTML表单元素、React官方合成事件的传参规范,它绑定的onChange回调第一个参数不是标准事件对象,而是直接返回编辑器当前的纯文本/HTML内容字符串。代码里尝试读取e.target.name、e.target.value时,因为参数本身是字符串不存在target属性,自然会抛出undefined报错。这个差异是第三方组件的设计逻辑导致,普通HTML元素不存在这个问题。
修复方法
直接放弃从回调参数里读取target.name、target.value的写法,手动绑定对应字段名即可,代码修改如下:
- 第一步:调整事件处理函数,直接接收字段名、内容值两个参数
let [something,setSomething] = useState({'s':''}) let {s} = something let handleChange = (fieldName, fieldValue)=>{ setSomething({ ...something, [fieldName]: fieldValue }) }
- 第二步:调整JoditEditor的onChange绑定逻辑,手动传入对应字段名
<JoditEditor required className='s' name='s' value={s} onChange={(newContent) => handleChange('s', newContent)} />
补充说明
- 绝大多数React第三方富文本组件的onChange回调都不会返回标准事件对象,默认直接抛出编辑器最新内容,不要套用原生input的事件处理逻辑写这类组件的交互
- 这种手动传字段名的写法兼容性更强,不会因为组件版本迭代调整回调参数结构就出现运行时报错
内容的提问来源于stack exchange,提问作者Ghazi
相关产品推荐
相关产品推荐

