Черновик- js не сохранять базу данных - PullRequest
0 голосов
/ 30 января 2020

Я не могу сохранить description как часть состояния компонента. Я могу только сохранить название. Как сохранить заголовок и описание в базе данных?

const BlogCreate = ({ history }) => {
const [blogCreate, setBlogCreate] = useState({
    title: "",
    description: ""
});
const [editorState, setEditorState] = useState(
    EditorState.createEmpty(),
);
const handleChange = ({ currentTarget }) => {
    const { name, value } = currentTarget;
    setBlogCreate({...blogCreate, [name]: value});
};
const onEditorStateChange = editorState => {
    setEditorState(editorState);
};
const handleSubmit = async event => {
    event.preventDefault();
    const data = draftToHtml(convertToRaw(editorState.getCurrentContent())); 
    try {
        await blogAPI.create(blogCreate, data);
    } catch (error) {
         console.log(error)
        }
    }
    console.log(data);
}
return(
      <Field type="text" name="title" error={errors.title} value={blogCreate.title} 
               onChange={handleChange} 
             />
      <Editor name="description" editorState={editorState} onEditorStateChange={editorState => onEditorStateChange(editorState)}
             />
      <button type="submit">Save</button>    
   );
}
export default BlogCreate;

1 Ответ

0 голосов
/ 30 января 2020

Основываясь на полном коде, который вы мне предоставили, я понял, что вы не обновляете должным образом состояние blogCreate всякий раз, когда происходит изменение в компоненте Editor.

onEditorStateChange() должен обновлять состояние blogCreate, и, кроме того, changeValue() должен возвращать результат value.

const changeValue = editorState => {
  const value = ....

  return value;
};

const onEditorStateChange = editorState => {
  const description = changeValue(editorState);
  setBlogCreate({
     ...blogCreate,
     description,
  });
  setEditorState(editorState);
};

Таким образом, description будет надлежащим образом обновлено в вашем состоянии и будет отправлено на ваш сервер, когда вы сделаете запрос blogAPI.create().

...