我正在学习反应,所以我创建了一个简单的应用程序来管理带有标题和描述的笔记。

该应用程序与Go制作的REST API通信,因此我可以获取,编辑,创建和删除注释。

因此,问题出在以下地方,我有这两个功能可以删除和编辑注释,它们位于App.js文件中:

   removeNote(note) {
    fetch('http://localhost:9000/notes/delete', {
      mode: 'cors',
      method: 'DELETE',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(note)
    }).then(res => {
      console.log(res.text);
      this.getNotes();
    })
  }

  saveEditNote(note) {
    fetch('http://localhost:9000/notes/update', {
      mode: 'cors',
      method: 'PUT',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(note)
    }).then(res => {
      console.log(res);
      this.getNotes();
    })
  }


功能不同,但是两个函数的功能几乎相同,它们向后端发送一个http请求,并在获得响应时调用this.getNotes();。用于更新注释列表的功能。

现在,当我按下“删除”按钮时,应用程序成功删除了笔记,并调用getNotes()更新列表就好了。

当我按“保存”按钮更新便笺时,应用程序成功更新了便笺,但是,当它调用getNotes()时出现以下错误


  未处理的拒绝(TypeError):_this4.getNotes不是函数


题:
为什么它在“编辑”功能中失败,但是在删除功能中却像超级按钮一样起作用?

我已经像这样在App.js中绑定了该函数:

this.getNotes = this.getNotes.bind(this);


因此,这不应该是问题。

注意组件标签代码:

cards = this.state.notes.map((note, i) => {
    return (
      <Note note={note} index={i} onRemoveNote={this.removeNote} onEditNote={this.saveEditNote} key={i}></Note>
    )
  })


注释组件的handleSaveEditNote函数代码:

handleSaveEditNote(note) {
        note.name = this.state.noteName;
        note.description = this.state.noteDescription;
        this.props.onEditNote(note)
    }


我通过从Note.js调用App.js的getNotes函数,然后刷新页面窗口来进行变通。

getNotes() {
        this.props.onGetNotes();
        window.location.reload();
    }


但这很丑陋,我应该能够在编辑功能中使用getNotes函数,就像我在删除功能中使用它一样。

任何帮助将不胜感激,感谢您的时间和英语不好的歉意。祝你有美好的一天!

最佳答案

您还需要绑定功能saveEditNote。 this.getNotes()的调用站点位于saveEditNote内部,该位置发生在与定义getNotes不同的位置。

关于javascript - react -未处理的拒绝(TypeError):_this4.getNotes不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54426800/

10-10 09:51