У меня проблемы с определением дочерних компонентов в Vue.
У меня есть эта разметка здесь:
<parent>
<child-one>
</child-one>
<child-two>
</child-two>
<child-one>
</child-one>
</parent>
Компонент parent
работает, поэтому он делает это:
render(createElement) {
return createElement('div', this.$slots.default);
},
Я хочу перебрать this.$children
и вернуть массив VNodes вроде этого:
const matchingChildren = this.$children
.filter(child => child.isChildOneType === true)
return createElement('div', {}, matchingChildren)
Как мне это сделать?
Что и где мне нужно фильтровать?
Я почти уверен, что смогу сделать это, установив type
prop на child-one
, а затем используя this.$children.filter(child => child.$attrs.type === 'special')
, но я хочу отфильтровать их по факту, что они child-one
компоненты.
Я пытаюсь сделать пример простым, но это для страниц с вкладками, поэтому я не заинтересован в условном рендеринге. Я пытаюсь преобразовать разметку в другой вывод DOM, и мне нужно отфильтровать дочерние элементы определенного типа.
Я исследовал $attrs
и $options
как крючки, которые я мог бы использовать, но если я использую attrs, мне нужно добавить опору для каждого компонента. Я хотел бы избежать этого, так как они все типа child-one
. Я также не могу добавить статическое свойство к child-one
. Поле $options
всегда пусто.