Исключить идентификаторы из (постоянного) фильтра в компоненте Список

Этот вопрос относится к response-admin и связанным с ним компонентам

Как исключить идентификаторы из свойства фильтра компонента List? Приведенный ниже код предоставит мне список записей с идентификаторами 1,3 и 5. Я хочу сделать наоборот и исключить их из списка.

Если нет простого способа сделать это, как я могу получить массив идентификаторов записей в ресурсе? Заранее спасибо!

<List {...props}  filter={{ id : [1,3,5] }} >
  <Datagrid>
    <TextField source="id" />
    <TextField source="title" />
    <TextField source="body" />
  </Datagrid>
</List>

person Ahmed Lafeer    schedule 15.09.2018    source источник
comment
Что на {...props}?   -  person Anthony    schedule 16.09.2018
comment
Привет, @Tony, я пытаюсь создать собственный компонент в response-admin .... посредством которого из режима редактирования записи в ресурсе «коллекции» я хочу добавить к нему массив идентификаторов записей из другой ресурс, называемый «действиями», через компонент List response-admin. У меня эта функциональность работает, но я хочу добиться того, чтобы в следующий раз, когда я добавляю действия в эту коллекцию, список должен отфильтровывать действия, уже находящиеся в этой коллекции. {...props} передаются из компонента Edit записи коллекций в компонент List. Он включает в себя следующие реквизиты.   -  person Ahmed Lafeer    schedule 16.09.2018
comment
дочерние элементы basePath crudGetOne dispatchCrudUpdate запись hasCreate hasEdit hasShow hasList id isLoading сопоставление местоположения resetForm ресурс startUndoable title переводить отменяемую версию   -  person Ahmed Lafeer    schedule 16.09.2018


Ответы (1)


Предположим, в вашем состоянии у вас есть следующие идентификаторы

state = {
   allID: [1,2,3,4,5,6,7,8 ... n],
};

Теперь, предполагая, что вы хотите показать все, кроме id, равного 3,5, 7, вы можете сделать следующее

render() {
  const { allID } = this.state;
  const IdToExclude = [3,5,7];
  const filteredID = allID.filter(id => {
     return !IdToExclude.includes(id)
  });
  return (
      <List {...props}  filter={{ id : filteredID }} >
        <Datagrid>
           <TextField source="id" />
           <TextField source="title" />
           <TextField source="body" />
        </Datagrid>
      </List>
  );
}

Теперь я использую Array.includes, чтобы исключить из вашего списка идентификаторов, подробнее об этом. Включает массив MDN

person Adeel Imran    schedule 17.09.2018