Vue3 composable with render

1.7k Views Asked by At

Is it possible to create a composable function that would use render function so it can display something?

Example:

import { h } from 'vue'

export function useErrorHandling() {
  return {
    render() {
        return h('div', { class: 'bar', innerHTML: 'world!' })      
    }
  }
}
<script setup>
import { useErrorHandling } from './mouse.js'

 useErrorHandling()
</script>

<template>
 hello
</template>

plaground with above example

2

There are 2 best solutions below

2
Youness Ait Ali On BEST ANSWER

Yes It is possible to do that you need just store the value returned by the composable in a variable and use it as a component

const err =  useErrorHandling()
//in template 
// <err />

Playground Example

0
JackChouMine On

createApp and mount can help you.

function HelloWorld({ fontSize }) {
  return h(
    'div',
    {
      style: {
        color: 'red',
        fontSize,
      },
    },
    'Hello World'
  )
}
const app2 = createApp(HelloWorld, {
  fontSize: '30px',
})
app2.mount('#app-2') // pass selector you want to mount