динамический фильтр на основе значения record.account

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" />

I'd like to add a dynamic filter in the ReferenceArrayInput based on one of the value in record. However, it is not working for some reasons. Any help with this is greatly appreciated.

Спасибо!


person Dragon    schedule 18.07.2017    source источник


Ответы (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>
person Dragon    schedule 19.07.2017

Вы можете попробовать 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 создает клон реквизита, а затем изменяет его. Никогда не пытайтесь изменять входные свойства напрямую.

person kunal pareek    schedule 19.07.2017