Nano Hash - криптовалюты, майнинг, программирование

Ошибка: из функции рендеринга возвращено несколько корневых узлов. из v-item-group

Я использую Vuex с Vuetify.

Я пытаюсь создать компонент v-dialog. Форма выглядит нормально, но изображения из v-item-group отсутствуют.

Компонент Vue

<template>
    <v-row justify="center">
        <v-dialog v-model="isDoorDimDialog" max-width="800px">
            <template v-slot:activator="{ on }">
                <v-btn color="primary" dark v-on="on">Add</v-btn>
            </template>
            <v-card>
                <v-card-title>
                <span class="headline">Select Door Dimensions:</span>
                </v-card-title>
                <v-card-text>
                    <v-container>
                        <v-row>

                            <v-col cols="12" sm="6" md="4">
                                <v-text-field 
                                    label="Height*" 
                                    required>
                                </v-text-field>
                            </v-col>

                            <v-col cols="12" sm="6" md="4">
                                <v-text-field 
                                    label="Width" 
                                    hint="example of helper text only on focus">
                                </v-text-field>
                            </v-col>

                            <v-col>
                            <v-item-group v-model="selectedType" mandatory>
                                <v-row>
                                    <v-col
                                        v-for="(img, name) in imgTypes"
                                        :key="name"
                                        cols="12"
                                        md="6"
                                    >
                                        <v-item v-slot:default="{ active, toggle }">
                                            <v-img
                                                :src="`{{img}}`"
                                                height="150"
                                                class="text-right pa-2"
                                                @click="toggle"
                                            >
                                                <v-scroll-y-transition>
                                                    <div
                                                        v-if="active"
                                                        class="display-3 flex-grow-1 text-center"
                                                    >
                                                    Active
                                                    </div>
                                                </v-scroll-y-transition>
                                            </v-img>
                                            <h3>{{name}} Door</h3>
                                        </v-item>
                                    </v-col>
                                </v-row>
                            </v-item-group>
                            </v-col>
                        </v-row>
                    </v-container>
                    <small>*indicates required field</small>
                </v-card-text>
                <v-card-actions>
                    <div class="flex-grow-1"></div>
                        <v-btn 
                            color="blue darken-1" 
                            text 
                            @click="isDoorDimDialog = false">Close
                        </v-btn>
                        <v-btn 
                            color="blue darken-1" 
                            text 
                            @click="isDoorDimDialog = false">Save
                        </v-btn>
                </v-card-actions>
            </v-card>
        </v-dialog>
    </v-row>
</template>

<script>
import { mapState } from 'vuex';
export default {
    computed: {
        ...mapState('addDoors', {
            imgTypes: state => state.imgTypes
        }),
        isDoorDimDialog: {
            set(isDoorDimDialog) {
                this.$store.commit('addDoors/setIsDoorDimDialog', isDoorDimDialog);
            },
            get() {
                return this.$store.state.addDoors.isDoorDimDialog;
            }
        },
        selectedType: {
            set(selectedType) {
                this.$store.commit('addDoors/setSelectedType', selectedType);
            },
            get() {
                return this.$store.state.addDoors.selectedType;
            }
        }
    },

}
</script>

<style scoped>

</style>

Вьюекс

export const addDoors = {
    namespaced: true,
    state: {
        isDoorDimDialog: false,
        imgTypes: {
            Standard: '@/assets/door-icons/icon-doors-standard.png',
            Sliding: '@/assets/door-icons/icon-doors-sliding.png',
            Balcony: '@/assets/door-icons/icon-doors-balcony.png'
        },
        selectedType: ''
    },
    mutations: {
        setIsDoorDimDialog(state, isDoorDimDialog) {
            state.isDoorDimDialog = isDoorDimDialog;
        },
        setSelectedType(state, selectedType) {
            state.selectedType = selectedType;
        }
    },
    actions: {

    }
}

После того, как я добавил v-item-group, я получаю сообщение об ошибке:

[Предупреждение Vue]: функция рендеринга возвращает несколько корневых узлов. Функция рендеринга должна возвращать один корневой узел.

Изображения тоже не отображаются.

Как мой код точно создает несколько корневых узлов?


Ответы:


1

У вас может быть только один дочерний элемент внутри <v-item>. В настоящее время у вас есть два, <v-img> и <h3>.

v-item — это компонент без рендеринга. Он не отображает никаких элементов сам по себе, он просто отображает содержимое своего слота по умолчанию. Если этот слот содержит несколько элементов, все они будут возвращены, что приведет к ошибке, которую вы видите.

Соответствующий код в Vuetify находится здесь:

https://github.com/vuetifyjs/vuetify/blob/7f7391d76dc44f7f7d64f30ad7e0e429c85597c8/packages/vuetify/src/components/VItemGroup/VItem.ts#L53

Вы должны увидеть сообщение об ошибке от самого компонента:

v-item должен содержать только один элемент

Попробуйте обернуть два узла одним родителем.

05.09.2019
  • Я получил 2 разные ошибки в консоли. Тот, который я добавил выше, был в red, а другой - в yellow. Я обратил внимание только на тот, что в red 06.09.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..