почему возвращается другой результат? (функция стрелки es6) - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь собрать sh некоторые данные в базу данных.

Вот моя функция handleSubmit в приложении. js

  handleSubmit = e => {
    e.preventDefault();
    const note = {
      title: this.state.title,
      body: this.state.body
    };
    this.props.saveNotes(note);
    this.setState({
      title: "",
      body: ""
    });
  };

, а это моя функция saveNote и работает нормально.

function saveNotes(note) {
  database.push(note);
}

Интересно, почему загрузка в базу данных не работает с использованием функции стрелки, подобной этой

function saveNotes(note) {
  return () => database.push(note);
}

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

, если вы хотите, чтобы следующие работали:

function saveNotes(note) {
  return () => database.push(note);
}

, тогда вы должны назвать saveNotes(note) следующим образом.

this.props.saveNotes(note)();

ИЛИ

const arrowFunction = this.props.saveNotes(note);
arrowFunction();

Поскольку вы возвращаете ссылку на функцию, а не результат функции

См. Руководство IIEF

Но здесь это не подходит, так как вы можете просто позвонить так:

const saveNotes = (note) => database.push(note);
1 голос
/ 13 февраля 2020

Поскольку вы использовали функцию внутри функции

, если вы хотите переписать функцию с использованием синтаксиса function , вы должны сделать следующее:

const saveNotes = (note) => {
  database.push(note);
}

или

const saveNotes = (note) => database.push(note);

, если вы хотите узнать больше о функции стрелки, ознакомьтесь с MDN Web Docs

0 голосов
/ 13 февраля 2020

последняя функция saveNote возвращает функцию () => { return database.push(note) }, поэтому она не работает pu sh action.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...