Files
certd/packages/ui/certd-ui/src/components/component-render.vue
T
2021-02-08 00:21:36 +08:00

34 lines
672 B
Vue

<script>
import { h, resolveComponent } from 'vue'
import _ from 'lodash-es'
export default {
name: 'component-render',
props: {
name: {
type: String,
default: 'a-input'
},
children: {
type: Array
},
on: {
type: Object
}
},
setup (props, context) {
const attrs = {
...context.$attrs
}
_.forEach(props.on, (value, key) => {
attrs[key] = value
if (typeof value === 'string') {
// eslint-disable-next-line no-eval
attrs[key] = eval(value)
}
})
const comp = resolveComponent(props.name)
return () => h(comp, context.$attrs, props.children)
}
}
</script>