批量操作执行后如何取消选择复选框?

时间:2018-09-11 16:12:19

标签: datagrid react-admin

List模块上,我创建了一个批量操作按钮,通过调用自定义操作来生成PDF。 问题是执行动作后,没有取消选中<Datagrid>复选框。

这是我的自定义操作:

export const print = (resource, ids, data) => ({
  type: DOWNLOAD,
  payload: {
    id: ids.length === 1 ? ids[0] : ids,
    data,
  },
  meta: {
    resource: resource,
    fetch: PRINT,
    onFailure: {
      notification: {
        body: 'ra.notification.http_error',
        level: 'warning',
      },
    },
  },
});

这是我的按钮:

class PrintBulkButton extends React.Component {
  handleClick = () => {
    const { basePath, options, print, resource, selectedIds } = this.props;

    print(resource, selectedIds, options, basePath);
  };

  render() {
    return (
      <Button {...sanitizeRestProps(this.props)} onClick={this.handleClick}>
        {this.props.icon}
      </Button>
    );
  }
}

我正在使用react-admin 2.3.0,但它也无法在以前的版本中使用。

我认为未取消选中复选框,因为我调用的服务不会更新数据。 我说的对吗?

我是否需要致电其他服务或操作以取消选中它们,或者我丢失了什么?

1 个答案:

答案 0 :(得分:1)

您可以添加我们应记录的onSuccess副作用参数unselectAll: true(请为此发布一个问题):

export const print = (resource, ids, data) => ({
  type: DOWNLOAD,
  payload: {
    id: ids.length === 1 ? ids[0] : ids,
    data,
  },
  meta: {
    resource: resource,
    fetch: PRINT,
    onSuccess: {
        unselectAll: true,
    },
    onFailure: {
      notification: {
        body: 'ra.notification.http_error',
        level: 'warning',
      },
    },
  },
});