是否可以在列表组件呈现时访问应用的过滤器

时间:2017-05-18 08:27:47

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

我正在使用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这样的东西可以访问它们吗?

1 个答案:

答案 0 :(得分:1)

您可以根据其他资源的管理员资源获取过滤器。您需要connect组件并在mapStateToProps中访问此类过滤器。 然后,您可以在组件中以this.props.eventFilters访问它。

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

export default connect(mapStateToProps)(MyComponent)