我正在使用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
这样的东西可以访问它们吗?
答案 0 :(得分:1)
您可以根据其他资源的管理员资源获取过滤器。您需要connect
组件并在mapStateToProps
中访问此类过滤器。
然后,您可以在组件中以this.props.eventFilters
访问它。
function mapStateToProps(state) {
return {
eventFilters: state.admin.resources.myEventsResource.list.params.filter
};
}
export default connect(mapStateToProps)(MyComponent)