具有多个参数的反应函数

迪莱特

我在尝试使用调用 API 方法从数据库中删除所选项目的删除函数时遇到问题。

API 只接受页面 ID,所以我一直在尝试将 ID 发送到 api。

这是应用程序主容器中的函数。

  deletePage(id) {
    instance.put(`/admin/deletePage/${id}`).then((response) => {
      this.getPages();
      window.location.replace('/')
    }).catch((error) => {
      console.log(error)
    })
  }

然后我将此函数作为道具传递给 Dashboard 组件,在那里我创建另一个函数来处理删除:

  handleDelete(e, id) {
    e.preventDefault()
    this.props.deletePage(id)
  }

最后,我的渲染功能:

render() {
    const pages = this.props.pages.map((page, i) => {
        return (
        <div key={i}>
        <h2>{page.title}</h2>
        <a href={`/admin/edit-page/${i}`}>Edit</a>
        <button onClick={this.handleDelete(i)}>Delete</button>
        </div>
        )
    });

    return (
      <div>
        <h2>Dashboard</h2>
        {pages}
      </div>
    );
  }

目前我在控制台中收到此错误: e.preventDefault is not a function

如果我删除 preventDefault 行,它只会导致不断重新加载。

请帮忙。只是想删除东西 mwhaha

CESCO

您应该使用高阶函数来执行此操作。它只是一个返回另一个函数的函数。

handleDelete(id) {
    return (event)=> {
        event.preventDefault()
        this.props.deletePage(id)
    }
}

然后像以前一样调用

 <button onClick={this.handleDelete(i)}>Delete</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章