// App.vue
<template>
  <MyBtn 
    class="malza"
    style="color: royalblue"
    color="#ff0000"
    @printlog="log">
    Apple
  </MyBtn>
</template>

<script>
import MyBtn from "~/components/MyBtn"

export default {
  components: {
    MyBtn
  },
  methods: {
    log() {
      console.log('Hello vue!')
    }
  }
}
</script>
// MyBtn.vue
<template>
  <div
    v-bind="$attrs"
    class="btn"
    @click="printlog">
    <slot></slot>
  </div>
</template>

<script>
import { onMounted } from 'vue'
export default {
  inheritAttrs: false,
  props: {
    color:{
      type: String,
      default: 'gray'
    }
  },
  emits: ['printlog'],
  setup(props, context) {
    function printlog() {
      context.emit('printlog')
    }
    onMounted(() => {
      console.log(props.color)
      console.log(context.attrs)
    })

    return {
      printlog
    }
  }
}
</script>