Результаты фильтрации зависят от конечной точки api, которую вы предоставляете для dataProvider
prop.
Когда вы пытаетесь отфильтровать - скажем, username
равно bret
, делается запрос (вы можете проверить вкладку n / w) с параметрами запроса. Например, вот так:
https://jsonplaceholder.typicode.com/users?_end=10&_order=ASC&_sort=id&_start=0&username=bret
Итак, ваш бэкэнд прочитает параметры и вернет отфильтрованные результаты. В вашем случае конечная точка api всегда делает OR
, а не AND
. Отсюда проблема.
Один из способов решения - просто настроить бэкэнд, который возвращает AND
результатов.
Другой способ - расширить DataProvider и переопределить getList
функционировать и манипулировать результатами API в соответствии с вашими требованиями.
import simpleRestProvider from 'ra-data-simple-rest';
const dataProvider = simpleRestProvider('http://path.to.my.api/');
const myDataProvider = {
...dataProvider,
getList: (resource, params) => {
// custom getList function
...
См. исходный код getList , чтобы скопировать код функции и настроить его в соответствии с вашими потребностями