从列表组件的(永久)过滤器中排除ID

时间:2018-09-15 21:13:34

标签: reactjs react-redux admin-on-rest react-admin

此问题与react-admin及其相关组件有关

如何从列表组件的过滤器属性中排除ID?下面的代码将给我列出ID为1,3和5的记录。我想做相反的事情,并将它们从列表中排除。

如果没有简单的方法,如何获取资源中记录的ID数组?预先感谢!

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

1 个答案:

答案 0 :(得分:0)

假设您在您的状态下具有以下ID,

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从您的ID列表中排除更多信息。 MDN Array Includes