通过将特定属性设置为用作筛选条件(例如
this.$children.filter(child => child.$attrs.type === 'special')
如果您的子组件是其他非组件标记的兄弟姐妹,或者那些不想过滤的兄弟姐妹,那么您别无选择,只能设置一个表示它们是您需要的组件的支撑。
在浏览器中,子节点显然是泛型的,如果不使用某种标识符(如标记名、id、属性或属性),则无法正确地彼此隔离。通过vue、react、html、native js呈现的节点在浏览器的透视图中都是相同的。
因为你不能使用组件名
child-one
因为它们将像普通的html一样呈现,所以您只需简单地向vue模板上的每个组件包装器添加一个attribute/v-attribute,并在呈现后像普通节点一样过滤掉它们。
<parent>
<child-one>
<div class="wrapper" componentType="1"></div>
</child-one>
<child-two>
<div class="wrapper" :componentType="data.type"></div>
</child-two>
<child-one>
<div class="wrapper" componentType="1"></div>
</child-one>
</parent>
或者您可以在组件本身上添加属性,这是我以前从未尝试过的,因此我无法帮助您