Stack Exchange
Vuejs - When component is inside in another component methods wont work?
When component is inside in another component, methods inside, who calculate discount wont work.
productlist(v-slot="{ cellBox, cellType }", view-type="line")
   productshort(title="lorem ipsum", instock="12", caption="EVR07.3405", price="6500", oldprice="7900", image="img/demo/1.jpg", :cellclass="cellBox", :cardtype="cellType")

The percentage() method calculates the percentage of discounts, but when the productshort component is inside productlist component, percentage() method does not execute.
<template lang="pug">
    div(:class="cellclass")
        .product-short(:class="intclass")
             .product-short__footer
                 .product-short__price
                     span.smart-badge(v-if="oldprice") – {{ finalsell }} ₽
                     .fill-price(v-if="price")
                     b {{ price }} ₽
                     s(v-if="oldprice") {{ oldprice }} ₽
</template>

<script>
export default {
    name: 'productshort',
    props: {
        sellpercent: {
            type: Number
        },
        cellclass: {
            type: String,
            default: ''
        },
        cardtype: {
            type: String,
            default: 'row'
        },

        intclass: {
            type: String
        },

        price: {
            type: Number
        },
        oldprice: {
            type: Number
        },
        finalsell: {
            type: Number
        },
    },
    methods: {
        percentage() {
            this.finalsell = parseInt(this.oldprice) - parseInt(this.price);
            if(this.oldprice) {
                this.sellpercent = parseInt(this.finalsell) / parseInt(this.oldprice) * 100;
                this.oldprice = parseInt(this.oldprice).toLocaleString('ru-RU')
            }
            if(this.finalsell) this.finalsell = parseInt(this.finalsell).toLocaleString('ru-RU');
            if(this.price) this.price = parseInt(this.price).toLocaleString('ru-RU');
        }
    },
    mounted() {
        this.percentage();
    }
}
</script>


*Methods works, but the visual part on the page is not updated

Have you tried using computed properties instead of methods? see: https://vuejs.org/v2/guide/computed.html#Computed-Properties

You should not update props inside the component. Maybe that is the problem. Is there any warning?

No there is no warning :(  When i click any button on parrent component, card is update and method run (if i use console log), but page not update

Have you tried Vue.nextTick? Could be related to the async DOM rendering. https://vuejsdevelopers.com/2019/01/22/vue-what-is-next-tick/
