2017-04-26 67 views
1

我有这样(JSX东西)的码:过滤列表反应的组分

let my_components = [<TCol dataField = {'id'} ... >{'id'}</TCol>]; 
    my_components.push(<TCol dataField = {'name'} ... >{'name'}</TCol>); 
    ... 
    my_components.push(<TCol dataField = {'zip'} ... >{'zip'}</TCol>); 
    my_components.push(<TCol dataField = {'age'} ... >{'age'}</TCol>); 

我也有另一个列表等:hideComps = {“拉链”,“年龄”}。我需要获取另一个对象,如my_components,其中每个元素都属于my_components,但其dataField不在hideComps中。这可能吗?

+1

难道你不能只存储一个数据列表,并从那里生成组件? – Kroltan

+0

问题是,除了dataField之外,还有其他复杂的选项,它们之间可能会有很大差异。 –

+0

也许我应该创建一个地图 –

回答

0

技术性这很简单,如果不认为这是一个坏模式。 而且你不必像这样写dataField = {'id'},这是没有必要的。你可以写只是dataField="id"

const hideComps = ['zip', 'age']; 

let my_components = [<Main dataField="id">{'id'}</Main>]; 
my_components.push(<Main dataField="name">{'name'}</Main>); 

my_components.push(<Main dataField="zip">{'zip'}</Main>); 
my_components.push(<Main dataField="age">{'age'}</Main>); 

const filtered_components = my_components.filter(item => hideComps.indexOf(item.props.dataField) === -1); 

当创建一个组件,您收到的React Component一个链接,本质上是一种常见的JavaScript Object(通过JSX或通过React.createElement或其他无论如何也无所谓) (如果你当然不使用TypeScript),你可以访问他们的props