webfansplz / vuejs-challenges

Collection of Vue.js challenges
https://vuejs-challenges.netlify.app/
MIT License
2.69k stars 188 forks source link

22 - custom element #2747

Open knife710 opened 3 weeks ago

knife710 commented 3 weeks ago
<script setup lang='ts'>

import { propsToAttrMap } from "@vue/shared";
import { h } from "vue";
import { defineCustomElement } from "vue";
import { onMounted } from "vue"

/**
 * Implement the code to create a custom element.
 * Make the output of page show "Hello Vue.js".
*/
const VueJs = defineCustomElement({
  props: {
    message: String
  },
  render() {
    return h('div', {}, {default: ()=> this.message})
  }
})

customElements.define('vue-js', VueJs)
onMounted(() => {
  document.getElementById("app")!.innerHTML = "<vue-js message=\"Hello Vue.js\"></vue-js>"
})

</script>

<template>
  <div id="app"></div>
</template>