过滤反应组件列表

时间:2017-04-26 22:19:28

标签: javascript reactjs ecmascript-6 state

我有这样的代码(jsx stuff):

.each(function (index, p) {
  p.find('img')  // and not $(p).find('img') !
  ...
}

我还有另一个列表,例如:hideComps = {' zip',' age'}。我需要得到另一个像my_components这样的对象,其中每个元素都属于my_components,但其dataField不在hideComps中。这可能吗?

1 个答案:

答案 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);

当您创建组件时(通过JSX或通过React.createElement或其他任何方式无关紧要),您将收到指向React Component的链接,该链接本质上是一种常见的JavaScript {{1} (如果你当然不使用Object),你就可以访问他们的TypeScript