<div id="app">
  {{ total }}
  <button @click="clickHandler" style="margin-left: 10px;">Add</button>
  <my-component v-for="num of total" :key="num"></my-component>
</div>
Vue.directive('focus', {
  bind (el, binding) {
    console.log(binding)
  },
  inserted: function (el) {
    el.focus()
    console.log('inserted')
  },
  update (){
    console.log('update')
  },
  componentUpdated () {
    console.log('componentUpdated')
  }
})
const myComponent = {
  data () {
    return {
      message: 'Hi'
    }
  },
  template: `<p><input type="text" v-focus v-model="message" />{{ message }}</p>`
}

new Vue({
  el: '#app',
  data: {
    total: 0
  },
  components: {
    myComponent
  },
  methods: {
    clickHandler () {
      this.total++
    }
  }
})

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.js