@Vova135798

Как передать объект в компонент?

Я передаю данные объекта product в компонент product. Могу ли я вызвать целый объект в компоненте, или мне нужно его передать, как это сделано сейчас :object="product"
<template>
<div class="container">
    <spin v-if="loading"></spin>    
        <div v-else class="product-list">
            <product
                v-for="product in productList"
                :key="product.id"
                :object="product"
                :id="product.id"
                :title="product.title" 
                :price="product.price"
            />
        </div>
    </div>
</template>

<script>
    import Spin from "../components/spin.vue";
    import axios from "axios";
    import Product from "../components/Product.vue";


    export default {
        components: {
            Spin,
            Product,
        },
        data: () => ({
            loading: false,
            products: [],
        }),
        methods: {
            loadProducts() {
                axios.get("/api/products").then(res => {
                    this.products = res.data;
                    setTimeout(() => {
                        this.loading = false;
                    }, 500);
                });
            },
        },
    };

<template>
<div class="product">
    <div class="product-photo">
        <img src="https://loremflickr.com/210/210" alt="" width="210px" height="210px" />
    </div>
    <div class="product-content">
        <span class="product-title">
            <router-link :to="/product/ + id">{{
                    title
                }}</router-link>
        </span>
        <div class="product-bottom">
            <div class="product-price">
                {{ price }}
            </div>
            <div class="product-button">
                    <button v-on:click="addToCart()">
                        Добавить в корзину
                    </button>
            </div>
        </div>
    </div>
</div>
</template>

<script>
export default {
    props: {
        id: {
            type: Number,
            default: "NULL",
        },
        title: {
            type: String,
            default: "NULL",
        },
        price: {
            type: String,
            default: "NULL",
        },
        object: {
            type: Object,
            default: 'NULL'
        }
    },
    methods: {
        addToCart(){
            this.$store.commit('addToCart', this.object);
        },
        
    }
}
</script>
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
<product v-bind="product" />
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы