【问题标题】:CKEditorError: Cannot read property 'name' of undefinedCKEditorError:无法读取未定义的属性“名称”
【发布时间】:2021-02-23 12:51:14
【问题描述】:

我正在尝试构建一个网页来执行 CRUD 操作。我从 Ckeditor 收集数据以在 React 的 Json 服务器中发布时出错。

这是错误-

这是我的代码 -

注意:注意:此代码适用于普通输入表单,但在 Ckeditor 部分它不起作用

import { useHistory, Link } from 'react-router-dom';
import Header from '../Header/Header';
import bgpic from './a215_1_cover_image.jpg';

import { CKEditor } from '@ckeditor/ckeditor5-react';
import ClassicEditor from '@ckeditor/ckeditor5-build-classic';

const AddPost = () => {
  let history = useHistory();
  const [user, setUser] = useState({
    title: '',
    img: '',
    body: '',
  });

  const { title, img, body } = user;

  const onInputChange = (e) => {
    setUser({ ...user, [e.target.name]: e.target.value });
  };

  const onSubmit = async (e) => {
    e.preventDefault();
    await axios.post('http://localhost:3001/post', user);
    history.push('/');
  };
return (
    <>
      <div className='container'>
        <div className='w-75 mx-auto shadow p-5'>
          <h2 className='text-center mb-4'>Your Blog</h2>

          <form onSubmit={(e) => onSubmit(e)}>
            <div className='form-group'>
              <input
                type='text'
                required
                className='form-control form-control-lg'
                placeholder='Title'
                name='title'
                value={title}
                onChange={(e) => onInputChange(e)}
              />
            </div>

            <div className='form-group'>
              <CKEditor
                name='body'
                value={body}
                editor={ClassicEditor}
                onChange={(e) => onInputChange(e)}></CKEditor>
            </div>

          </form>
        </div>
      </div>
    </>
  );
};

export default AddPost;


  

【问题讨论】:

    标签: javascript reactjs ckeditor ckeditor5


    【解决方案1】:

    根据 CKEditor 文档Quick Start

    您可以使用 editor.getData() 方法访问编辑器的数据

    另外,您需要将 props value 改为 data

    应该是这样的:

    <CKEditor
      name="body"
      data={body}
      editor={ClassicEditor}
      onChange={(e, editor) => {
        setUser({
          ...user,
          body: editor.getData(),
        });
      }}
    ></CKEditor>
    

    【讨论】:

    • 谢谢,它正在工作!但它是用 html 标签解析的。我尝试使用ReactHtmlParser from 'react-html-parser',但它不起作用。你能告诉我如何将 Html 数据解析为普通文本
    • 如果你的意思是渲染 editor.getData() 响应尝试使用 dangerouslySetInnerHTML={{ __html: content }} 例如:
    • 如果我想在文本编辑器中插入图像并将其与其他文本一起推送到 json 服务器中,最简单的选择是什么,我该怎么做? (Easy Image, Ck finder, Base64 上传)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2022-01-22
    • 2021-11-13
    • 2022-01-14
    • 2022-06-22
    • 2017-02-06
    相关资源
    最近更新 更多