React admin: очистить выбранные идентификаторы после некоторого действия - PullRequest
0 голосов
/ 03 июля 2019

Итак, у меня есть такой компонент:

...
import dataProvider from 'myCustomDataProvider';

class Something extends React.Component {
  somethingBulk(selectedIds) {
    await dataProvider(SOMETHING, 'something', {
      data: { selectedIds },
    })
    this.props.refreshView();
  }

  render() {
    const props = this.props;

    return (
      <List 
        {...props} 
        bulkActions={<BulkActionsBar onConfirm={this.somethingBulk} />}
        filters={null} 
        exporter={false}
      >
        <Datagrid>...</Datagrid>
      </List>
    );
  }
}

export default compose(
  connect(
    null,
    {
      showNotification,
      refreshView,
      fetchStart,
      fetchEnd,
    }
  ),
)(Something);

BulkActionsBar - это простой компонент с кнопкой, которая onClick вызывает somethingBulk.Теперь строка this.props.refreshView() обновляет список, выбирает новые записи и все в порядке.За исключением того, что флажки остаются установленными, selectedIds сохраняет свое значение.

Итак, вопрос, как правильно очистить этот список?Я понимаю, что мне нужно отправить какое-нибудь излишнее действие, но я нигде не мог найти пример.

1 Ответ

0 голосов
/ 07 июля 2019

На основе комментариев и информации, предоставленной в этом другом вопросе: Как снять флажки после массового выполнения действия? Мне удалось заставить его работать.

import { withDataProvider } from 'react-admin';

class Something extends React.Component {
  somethingBulk(selectedIds) {
    const { dataProvider } = this.props;
    await dataProvider(SOMETHING, 'something', {
      data: { selectedIds },
    }, {
      onSuccess: {
        refresh: true,
        unselectAll: true,
      },
      onFailure: {
        unselectAll: true,
        notification: { level: 'warning' },
      },
    });

  }

  render() {
    const props = this.props;

    return (
      <List 
        {...props} 
        bulkActions={<BulkActionsBar onConfirm={this.somethingBulk} />}
        filters={null} 
        exporter={false}
      >
        <Datagrid>...</Datagrid>
      </List>
    );
  }
}

export default withDataProvider(Something);

Убедитесь, что вы используете последнюю версиюact-admin, я использовал более старую версию, которая не экспортировала withDataProvider.Таким образом, вы можете передать 4-й параметр поставщику данных, который обрабатывает побочные эффекты.

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