2017-07-28 70 views
1

我遇到了一個問題,我試圖過濾名爲「Severity」的列,列中有重複項。該列包含ERROR,INFO或DEBUG。當我使用這個:管理員休息有沒有辦法擺脫ReferenceInput中的重複過濾器?

const LogFilter = (props) => (
    <Filter {...props}> 
     <TextInput label="Search" source="q" alwaysOn /> 
     <ReferenceInput label="Severity" source="severity" reference="archivedfiles" allowEmpty> 
      <SelectInput optionText="Severity" /> 
     </ReferenceInput> 
    </Filter> 
); 

在我的下拉我得到的重複萬噸的事情列出來......有沒有一種方法,以使其具有唯一我想要的選項,沒有重複?

回答

0

您需要的是一個HigherOrder組件,用於包裝SelectInput並在它們碰到選擇輸入之前將其過濾掉。

const SelectUniqueChoices = WrappedComponent => props => { 
    const filteredChoices = UniqueElements(props.choices) 
    const newProps = {...props} 
    newProps.choices = filteredChoices 
    return (<WrappedComponent {...newProps} />) 
} 

const UniqueElements = (array) => (
    Array.from(new Set(array)) 
) 

const WrappedSelectField = SelectUniqueChoices(SelectInput) 

const LogFilter = (props) => (
    <Filter {...props}> 
     <TextInput label="Search" source="q" alwaysOn /> 
     <ReferenceInput label="Severity" source="severity" reference="archivedfiles" allowEmpty> 
      <WrappedSelectField optionText="Severity" /> 
     </ReferenceInput> 
    </Filter> 
); 
+0

得到它的工作基於你說的改變它像這樣。 'function MyFilter(array){0} {0} {0} var filterarray = []; (var i = 0; i ( MyFilter(array) )' – Stebermon

+0

看起來不錯! Set是ES6中一個很酷的新概念,值得一試。 –

相關問題