【问题标题】:How can I make jodit textarea dynamic without using useMemo如何在不使用 useMemo 的情况下使 jodit textarea 动态化
【发布时间】:2021-12-29 15:02:58
【问题描述】:

我用 jodit-react 做了一个文本编辑器。但只要我在文本输入中输入一个值,焦点就会被禁用。

{contentFromApi && (
    <JoditEditor
       value={contentFromApi}
       config={config}
       onChange={handleTextAreaChange}
    />
)}

我这样做时遇到了我提到的问题。

功能:

const handleTextAreaChange = (newTextAreaValue) => {
    setContentFromApi(newTextAreaValue);
};

状态和获取

const { data, error } = useSWR('..');

const [contentFromApi, setContentFromApi] = useState();

我的尝试:

{React.useMemo(() => {
    return (
        <JoditEditor
             value={contentFromApi}
             config={config}
             onChange={handleTextAreaChange}
        />
    );
}, [])}

如果我这样做,'contentFromApi' 数据不会放在文本编辑器中,因为它来自 api。如果我强制代码等待来自 api 的数据,我会收到 React 的“渲染过多”错误。

我想要的是,当组件第一次渲染时,来自 api 的文本数据出现在文本编辑器中,并且可以以健康的方式进行更改。我该怎么做?

【问题讨论】:

    标签: reactjs jodit


    【解决方案1】:
    export default function App() {
      const [contentFromApi, setContentFromApi] = useState("");
    
      useEffect(() => {
        setTimeout(() => {
          setContentFromApi("DATA FROM API");
        }, 1000);
      }, []);
    
      const handleTextAreaChange = (newTextAreaValue) => {
        setContentFromApi(newTextAreaValue);
      };
    
      return (
        <div className="App">
          test:
          <input
            disabled={contentFromApi.length === 0}
            onChange={handleTextAreaChange}
            value={contentFromApi}
          />
        </div>
      );
    }
    
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多