【问题标题】:CloneButton on DataGrid goes to edit pageDataGrid 上的 CloneButton 进入编辑页面
【发布时间】:2019-03-14 14:18:46
【问题描述】:

我有以下代码:

<Datagrid rowClick="edit">
  <TextField source="id" label="Id" />
  <TextField source="token" label="Token" />
  <LinkResourceField
    label="Company"
    source="company.id"
    reference={record =>
      `${Pluralize.plural(get(record, 'company.category', 'company'))}`
    }
    display="company.name"
    sortable={false}
  />
  <TextField source="status" label="Status" />
  <CloneButton />
</Datagrid>

CloneButton 确实出现了,但是当我单击它时,它首先会进入创建页面,但最终会进入编辑页面以记录我单击的记录。

有人知道为什么会发生这种情况吗?无论如何要设置 CloneButton 以阻止它触发 rowClick?

感谢您的阅读和帮助。

【问题讨论】:

  • 这是一个 react-admin 错误; CloneButton 应该停止单击事件传播,以便数据网格行永远不会收到 rowClick 事件。我建议你在 react-admin 跟踪器中打开一个问题。
  • 谢谢!我会提交一个错误。
  • 对于其他提出这个问题的人,这是提交给 github 问题的内容:github.com/marmelab/react-admin/issues/3005
  • @FrançoisZaninotto 请检查下面的其他答案。 react-admin 也可以选择支持这个吗?有我们自己的 onClick 做某事,然后也运行内部的 onClick 处理程序?可选(可能通过不同的道具)

标签: reactjs clone react-admin


【解决方案1】:

感谢大家的帮助。

我能够在 react-admin 上提出一个错误和一个 PR 来解决这个问题。 https://github.com/marmelab/react-admin/pull/3006

现在 react-admin 版本 2.8.2 已修复此问题。

每个人的 cmets 都非常乐于助人,没有它我就无法到达这里。

也非常感谢 react-admin 团队快速批准和发布新版本。

【讨论】:

    【解决方案2】:

    你不能这样做吗:

    <CloneButton onClick={event => {
      event.stopPropagation()
      event.preventDefault()
      // do something here
    } />
    

    【讨论】:

    • 不太好,因为我为此使用了 react-admin 的组件。我没有办法//do something here,因为它是由 react-admin 控制的。
    • react-admin 是否也支持此选项?有我们自己的onClick 做某事,然后也运行内部的onClick 处理程序?
    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 2011-09-14
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多