Передача DOM-узлов через Vue Prop плохая практика - PullRequest
1 голос
/ 08 июня 2019

Я сейчас нахожусь в процессе написания компонента Карусель и пытаюсь выбрать лучший метод реализации.

См. Следующий компонент:

<template>

    <!-- Carousel -->
    <div class="carousel-container">

        <div ref="carousel" class="carousel">
            <slot></slot>
        </div>

        <carousel-navigation v-if="items.length" :orientation="orientation" :container="$refs.carousel" :items="items"></carousel-navigation>

    </div>

</template>

<script>

    import CarouselNavigation from 'core-js/components/common/CarouselNavigation';

    export default {

        components: {
            'carousel-navigation': CarouselNavigation
        },

        props: {

            orientation: {
                type: String,
                required: false,
                default: 'horizontal',
                validator: (value) => {
                    return ['horizontal', 'vertical'].indexOf(value) !== -1;
                }
            }

        },

        data() {
            return {
                items: []
            }
        },

        mounted () {
            this.items = [...this.$refs.carousel.children];
        }

    }

</script>

Компонент carousel-navigation принимает различные реквизиты, но конкретно items и container.

Ожидается, что опора container будет одним узлом DOM, а опора items - массивом узлов DOM.

Причина, по которой мне нужно пропускать узлы DOM, заключается в том, что carousel-navigation нужно знать, куда прокручиваться (items) и что прокручивать (container).

Это плохая практика? Если это так, что может быть лучше для достижения этой цели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...