0

我正在使用 admin-on-rest 并且我必须根据应用的过滤器更改列表视图中的列集。

有什么方法可以获得当前应用的过滤器,以便我可以进行某种条件渲染?

例子:

export const AssetList = (props) => (
(!props.filters.includes('group_by') ?
  <List title="Assets" filters={<AssetFilter/>} {...props}>
      <Datagrid>
          <TextField source="asset_uid" />
          <TextField source="amounts.price" label="Price" />
          <ChipListField source="flags" />
          <EditButton />
      </Datagrid>
  </List>
:
  <List title="Assets" filters={<AssetFilter/>} {...props}>
      <Datagrid>
          <TextField source="group_id" />
          <ChipField source="flag_counts.flag1" label="virtual" />
          <ChipField source="flag_counts.flag2" label="operational" />
          <TextField source="total_amounts.price" label="Price" />
          <EditButton />
      </Datagrid>
  </List>)
);

目前没有这样的事情,props.filters我有什么办法可以访问它们吗?

4

1 回答 1

1

您可以从其他资源获取基于 admin-on-rest 资源的过滤器。您需要connect组件并像这样访问过滤器mapStateToProps。然后您可以像this.props.eventFilters在组件中一样访问它。

function mapStateToProps(state) {
  return {
    eventFilters:  state.admin.resources.myEventsResource.list.params.filter
  };
}

export default connect(mapStateToProps)(MyComponent)
于 2017-12-08T06:26:53.323 回答