Reaction-admin: Доступ к <List /> записям из массовых действий - PullRequest
0 голосов
/ 25 июня 2019

Документы утверждают, что массовые действия не получают выбранные записи компонента List, а только выбранные идентификаторы, но мне нужно проверить определенное поле в каждой выбранной записи из обработчика нажатия кнопки bulkActionsButtons.

Есть идеи, как этого достичь?

1 Ответ

0 голосов
/ 26 июня 2019

Хорошо, это то, что я сделал, и это работает. Комбинация рендера и реф. Пожалуйста, если у кого есть идея получше, пожалуйста, дайте мне сейчас.

import React, {Component} from 'react';
import {
    List,
    Datagrid,
    TextField,
    Button
} from 'react-admin';

class MyBulkButtons extends Component {
    handleClick = () => {
        const {getSelectedRecords} = this.props;
        const records = getSelectedRecords();
        const selectedRecords = records.filter(i => i.title === 'Extra action!');

        this.processExtraActions(selectedRecords);
    };

    processExtraActions(selectedRecords) {
        //...
    }

    render() {
        return (
          <Button onClick={this.handleClick} label={"Check for extra actions"}/>
        );
    }
}

export class MyList extends Component {
    constructor(props) {
        super(props);
        this.myDataGrid = React.createRef();
    }

    getSelectedRecords() {
        const gridProps = this.myDataGrid.current.props;

        return gridProps.selectedIds.map(id => gridProps.data[id]);
    }

    render() {
        return (
          <List {...this.props}
                bulkActionButtons={<MyBulkButtons getSelectedRecords={this.getSelectedRecords.bind(this)}/>}>

              <Datagrid ref={this.myDataGrid}>
                  <TextField source="id"/>
                  <TextField source="title"/>
              </Datagrid>
          </List>
        );
    }
}
...