Search code examples
vue.jsvuejs2vue-component

Vue. How to get a value of a "key" attribute in created element


I am trying to create a component and get its :key for using in axios.

The element is created, but I can't get a key. It's undefined.

    <div class="container" id="root">
        <paddock is="paddock-item" v-for="paddock in paddocks" :key="paddock.key" class="paddock">
        </paddock>
    </div>
    <script>
    var pItem = {
        props: ['key'],
        template: '<div :test="key"></div>',
        created: function() {
            console.log(key);
        }
        };
    new Vue({
        el: '#root',
        components: {
            'paddock-item': pItem
        },
        data: {
            paddocks: [
                {key: 1},
                {key: 2},
                {key: 3},
                {key: 4}
            ]
        }
    })
    </script>

I tried some variants, but no result. key was empty.


Solution

  • In Vue 3 you can get the key with:

    import { getCurrentInstance} from "vue";
    
    getCurrentInstance().vnode.key