2017-07-18 66 views
1
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" /> 

动态过滤器基于record.account值

我想基于在记录中的值之一,在ReferenceArrayInput添加动态过滤器。但是,由于某些原因,它不起作用。任何帮助,这是非常感谢。

谢谢!

回答

0

您可以尝试AOR从属输入。

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

您可以在HOC包裹SelectArray输入。通过这种方式,您可以拦截传递给SelectArray输入的记录并将其更改为您的需要。

就是这样。

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

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

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

1

最后我做这样的事情:

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>