2017-04-26 64 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