Создание настраиваемого действия вact-admin. Я не вижу, куда ссылаться на мой поставщик данных. - PullRequest
0 голосов
/ 05 октября 2018

Я следую этому руководству для создания пользовательских действий в React-admin (бывший Admin-on-rest): с помощью создателя пользовательских действий .

Однако после его реализации мойкод ничего не делает, т.е. бэкэнд не вызывается.

Я предполагаю, что в документации отсутствует способ связать действие с dataProvider, если только он не обрабатывается автоматически.

Это правильно?Нет необходимости ссылаться на dataProvider, который отличается от того, что было сделано в примере выборки?

Следующие фрагменты моего кода:

  • UpdatePage очень похож на ApproveButton вучебник:

    // Update Page.js  
    import React, { Component } from 'react';  
    import PropTypes from 'prop-types';  
    import { connect } from 'react-redux';  
    import { updatePage } from '../../actions/pages';  
    import Button from '@material-ui/core/Button';  
    
    class UpdatePage extends Component {  
        handleClick = () => {  
            const { record } = this.props;  
            updatePage(record.id, record);  
        }  
    
        render() {
            return <Button disabled={this.props.disabled} onClick={this.handleClick}>Confirmar</Button>;
        }
    }
    
    UpdatePage.propTypes = {
        disabled: PropTypes.bool.isRequired,
        updatePage: PropTypes.func.isRequired,
        record: PropTypes.object,
    };
    
    export default connect(null, {
        updatePage
    })(UpdatePage);`
    
  • Действия для страницы обновления (как в комментарии к действиям учебника):

    //in ../../actions/pages.js  
    import { UPDATE } from 'react-admin';
    
    export const UPDATE_PAGE = 'UPDATE_PAGE';
    export const updatePage = (id, data) => ({
        type: UPDATE_PAGE,
        payload: { id, data: { ...data, is_updated: true } },
        meta: { fetch: UPDATE, resource: 'pages' },
    });
    

1 Ответ

0 голосов
/ 06 октября 2018

Вы вызываете создателя действия непосредственно в методе handleClick.Вам необходимо использовать функцию updatePage внутри реквизита, чтобы правильно распределить действие приведения.

handleClick = () => {  
    const { record } = this.props;  
    this.props.updatePage(record.id, record);  
}  
...