Ошибка типа: не удается прочитать свойство ‘name’ неопределенного — react

#reactjs

#reactjs

Вопрос:

У меня есть форма с «заголовком» и «содержанием». Содержимое находится в компоненте ReactQuill, который позволяет вам создавать форматированный текст. Перед добавлением этого компонента мой «onChange» нормально работал для обоих «входных данных». Теперь, когда компоненты разные, это больше не работает.

Я получаю сообщение об ошибке ниже:

ошибка

это код в AddArticle.js вот где находится форма:

 import React, { Component } from "react";
import firebase from "../Firebase";
import ReactQuill from "react-quill";
import "react-quill/dist/quill.snow.css";
import renderHTML from "react-render-html";

class AddArticle extends Component {
  constructor() {
    super();
    this.ref = firebase.firestore().collection("articles");
    this.state = {
      title: "",
      content: "",
    };
  }

  onChange = (e) => {
    this.setState({ [e.target.name]: e.target.value });
  };

  onSubmit = (e) => {
    e.preventDefault();

    const { title, content } = this.state;

    this.ref
      .add({
        title,
        content,
      })
      .then((docRef) => {
        this.setState({
          title: "",
          content: "",
        });
        this.props.history.push("/");
      })
      .catch((error) => {
        console.error("Error adding document: ", error);
      });
  };

  render() {
    return (
      <div className="container">
        <br></br>
        <br></br>
        <br></br>
        <div className="panel panel-default">
          <div className="panel-heading">
            <h3 className="panel-title text-center">Create a new article</h3>
          </div>
          <br></br>
          <br></br>
          <div className="panel-body">
            <form onSubmit={this.onSubmit}>
              <div className="form-group input-group-lg">
                <label for="title">Title:</label>
                <input
                  type="text"
                  className="form-control"
                  name="title"
                  value={this.state.title}
                  onChange={this.onChange}
                  placeholder="Title"
                />
              </div>
              <div className="form-group">
                <label for="content">Content:</label>
                <ReactQuill
                  theme="snow"
                  name="content"
                  value={this.state.content}
                  onChange={this.onChange}
                  placeholder="Content"
                />
              </div>
              <button type="submit" className="btn btn-success">
                Submit
              </button>
            </form>
          </div>
        </div>
      </div>
    );
  }
}

export default AddArticle;

  

Комментарии:

1. Могу тебя утешить. зарегистрируйте цель и посмотрите, что это за цель?

2. Ты имеешь в виду вот так? console.log(например, target); Извините, я действительно новичок в этом

3. Да, я узнал об этом вчера, поэтому каждый вопрос, на который были даны ответы и который помог с тех пор, я отметил галочкой как «закрытый». Хотя вы правы, мне нужно вернуться к другим и сделать то же самое для тех, кто помог.

Ответ №1:

onChange для ввода заголовка получает событие, содержащее имя и значение.
С другой стороны, onChange для компонента Quill получает фактическое содержимое.
В целом, вы должны использовать:

 onTitleChange = (e) => {
    this.setState({ title: e.target.value });
};

onContentChange = (content) => {
    this.setState({ content: content });
};
  

И передайте эти обработчики соответствующим образом вашему компоненту ввода заголовка и quill.