Есть два способа сделать это:
Один делает это, как в нашем официальном demo ( source ), где мы вызываем dataProvider
напрямуюбез использования приставки.Вы называете это так, как если бы это было для классической выборки (возможно, внутри вашего componentDidMount
).Что-то вроде:
dataProvider(GET_LIST, 'commands', {
filter: { date_gte: aMonthAgo.toISOString() },
sort: { field: 'date', order: 'DESC' },
pagination: { page: 1, perPage: 50 },
})
.then(response => {
this.setState({ commands: response.data });
});
Недостатком этого подхода является то, что вам придется самостоятельно обрабатывать ошибки, уведомления и т. Д.
Другим способом будет реакция на adminСоздатели редукционных действий делают то же самое, но используют обработку побочных эффектов (уведомления об ошибках и т. д.).На этот раз вы должны сделать свой <Dashboard>
подключенным компонентом:
import { connect } from 'react-redux';
import { crudGetList } from 'react-admin';
const mapStateToProps = state => {
const commandState = state.admin.commands;
// Is an object where keys are the commands identifiers
// and the values are the command
const commandsByIds = commandState.data;
return {
commands: Object.values(commandsByIds),
}
}
const mapDispatchToProps = {
crudGetList,
}
const ConnectedDashboard = connect(mapStateToProps, mapDispatchToProps)(Dashboard);
Затем вам нужно будет также позвонить на crudGetList
в вашем componentDidMount
:
componentDidMount() {
this.props.crudGetList(
'commands', // resource name
{ page: 1, perPage: 50 }, // pagination
{ field: 'date', order: 'DESC' }, // sorting
{ date_gte: aMonthAgo.toISOString() } // filters
);
}
Заключительные замечания:
Мы знаем, что документация может быть улучшена для этих случаев использования.Хорошей новостью является то, что мы скоро сделаем это проще (вероятно, в выпуске 2.8
): см. https://github.com/marmelab/react-admin/pull/2899