nickola105
@nickola105
начинающий

Почему не рендарятся данные в компонент?

Ребята всем привет.
Пытаюсь разобраться во вью, помогите.
есть вот такой дочерний компонент
<template>
    <div class="product clearfix">

        <div class="unit-left">
            <img src="./../assets/margo.jpg" class="clearfix">
        </div>

        <div class="unit-body">
            <h2 class="product-name">product.title</h2>
            <p class="product-description">Description</p>
        </div>
        <div class="unit-right">
            <div class="price">product.price</div>
            <div class="ordering">
                <!--<button class="add-button" @click="addToCart(p)" v-if="qtyInCart == 0">Заказать</button>-->
                <div>
                    <button class="inc clearfix" @click="addToCart(p)">-</button>
                    <span class="qty clearfix">7</span>
                    <button class="dec" @click="removeFromCart(p)">+</button>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    import { mapGetters, mapActions } from 'vuex'

    export default {
        prop: ['product'],
        
        methods: mapActions([
            'addToCart',
            'removeFromCart',
        ])
    }
</script>

далее он импортируется в родителя, вот он
<template>
    <ul>
        <li class="product  product-item" v-for="product in products" :product="product">
            <product-item ></product-item>


        </li>
    </ul>
</template>

<script>
    import { mapGetters, mapActions } from 'vuex'
    import ProductItem from './../components/ProductItem.vue'
    export default {
        computed: mapGetters({
            products: 'allProducts',
            //qtyInCart: 'qtyInCart'
        }),
        components: {
            ProductItem
        },
        created () {
            this.$store.dispatch('getAllProducts')
        }

    }
</script>

дело в том что он выводит все product from products однако title and price выводит как
product.title and product.price соответственно.
82fbbee110e34c7fbe04c3838919f7cb.png
Почему не подставляет название и цену соответствующего продукта. Что я делаю не так, чего не понял?
P/S: кошмар забыл двойные фигурные скобки, после того как сделал правку посыпались ошибки такого рода:
[Vue warn]: Property or method "product" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. 
(found in <ProductItem> at C:\OpenServer\domains\pizzaStore\src\components\ProductItem.vue)

[Vue warn]: Error in render function: 
(found in <ProductItem> at C:\OpenServer\domains\pizzaStore\src\components\ProductItem.vue)

TypeError: Cannot read property 'title' of undefined
  • Вопрос задан
  • 786 просмотров
Решения вопроса 2
<product-item :product="product"></product-item>

props: ['product'],

https://ru.vuejs.org/v2/guide/components.html#Вход...
Ответ написан
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Добавлю еще к Андрей Хохлов не забыть обернуть product.title в фигурные скобки - {{product.title}}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Dark-Energy
Всё это просто ужасно. Я тоже столкнулся с похожей ошибкой, когда данные не шли... я так и не понял, почему. Я был вначале в восторге от Vue. Теперь считаю, что лучший вариант это чистый js, грамотная архитектура и webpack. Все эти фреймвоки ни для чего сложнее рендеринга списков не подходят.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы