0

我用 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 的文本数据出现在文本编辑器中,并且可以以健康的方式进行更改。我怎样才能做到这一点?

4

1 回答 1

0
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>
  );
}

于 2021-12-29T15:34:27.587 回答