基于record.account值的动态过滤器

时间:2017-07-18 21:11:28

标签: admin-on-rest

const filterVal = (record) => ({
     name: record.account,
});

<ReferenceArrayInput {...props} source="access_id" reference="awsroles" label="AWS Roles" sort={{ field: 'id', order: 'DESC' }} filter={filterVal} 
     allowEmpty>
<SelectArrayInput source="id" />

我想根据记录中的一个值在ReferenceArrayInput中添加动态过滤器。但是,由于某些原因,它无法正常工作。非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

我最终做了这样的事情:

var filterVal = (props) => {
    return {AwsAccountId: props.match.params.id};
};

<ReferenceArrayInput source="access_roles" reference="awsroles" label="AWS Roles" sort={{ field: 'id', order: 'DESC' }} filter={filterVal(props)} allowEmpty>

答案 1 :(得分:0)

您可以尝试AOR相关输入。

https://github.com/marmelab/aor-dependent-input

您可以将SelectArray输入包装在HOC中。这样您就可以拦截传递给SelectArray输入的记录并根据需要进行更改。

像这样的东西。

const higherOrderComp = WrappedComponent => props => {
  return <div ><WrappedComponent {...modifyRecord(props)} /></div>
}

const modifyRecord = (props) => {
   //do something with props.record .....
}

注意 - 确保modifyRecord复制道具然后修改它。切勿尝试直接修改输入属性。