gpt4 book ai didi

reactjs - 在设置状态时将 React tinymce 与 react-hook-form 无限循环一起使用

转载 作者:行者123 更新时间:2023-12-02 18:35:16 25 4
gpt4 key购买 nike

我正在尝试使用 react-hook-form 附带的 setValue 函数,当用户输入到 react tinymce 编辑器以存储来自编辑器的输入 html 数据时: https://react-hook-form.com/api/useform/setvalue/ .

它在使用 onClick 按钮时工作正常,当我单击按钮时,从 tinymce 编辑器键入的 html 数据使用 setValue 函数使用 htmlContent 存储。

但是,当我尝试将 onEditorChange 或 onChange 函数与 setValue 一起使用时,react tinymce 编辑器不允许我输入它并且应用程序崩溃,我遇到了大约 5000 个控制台错误,这些错误在几秒钟内不断增加,这是'与组件相关,它不断以非常快的速度从另一个组件复制有关重复键的错误。

当尝试在提供的 onEditorChange 中使用 setValue 或使用 onChange 函数时,它似乎在进行无限循环并崩溃,但在使用按钮的相同逻辑 onClick 时工作正常。

import React, { useState } from 'react'
import { Editor } from '@tinymce/tinymce-react'
import { useFormContext } from 'react-hook-form'
import { HtmlEditorWrapper } from './HtmlEditor.styles'

type HtmlEditorProps = {
name: string
}

export const HtmlEditorComponent = ({ name }: HtmlEditorProps): JSX.Element => {
const [htmlContent, setHtmlContent] = useState('')
const { setValue } = useFormContext()

return (
<>
<HtmlEditorWrapper>
<Editor
value={htmlContent}
apiKey={process.env.REACT_APP_TINYMCE_KEY}
onEditorChange={(content: string) => {
setHtmlContent(content)
// setValue(name, content)
}}
// onChange={() => setValue(name, htmlContent)}}
init={{
height: 200,
menubar: false,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime media table paste code help wordcount',
],
toolbar:
'undo redo | formatselect | ' +
'bold italic backcolor | alignleft aligncenter ' +
'alignright alignjustify | bullist numlist outdent indent | ' +
'removeformat | help',
content_style:
'body { font-family:Helvetica,Arial,sans-serif; font-size:14px, }',
}}
/>

<button onClick={() => setValue(name, htmlContent)}>
Save desc
</button>
{htmlContent}
</HtmlEditorWrapper>
</>
)
}

最佳答案

这是一个带有演示 key 的工作示例:https://codesandbox.io/s/stupefied-sutherland-09eh2

有几种方法可以实现您想要的。其中之一是使用 ControlleruseController

关于reactjs - 在设置状态时将 React tinymce 与 react-hook-form 无限循环一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68853761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com