Skip to content

Commit 497e84e

Browse files
committed
feat: export defineRender runtime function
1 parent 0e52722 commit 497e84e

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

packages/runtime-core/src/apiSetupHelpers.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {
1818
ComponentOptionsMixin,
1919
ComponentOptionsWithoutProps,
2020
ComputedOptions,
21-
MethodOptions
21+
MethodOptions,
22+
RenderFunction
2223
} from './componentOptions'
2324
import {
2425
ComponentPropsOptions,
@@ -311,6 +312,28 @@ type PropsWithDefaults<
311312
: boolean
312313
}
313314

315+
/**
316+
* (**Experimental**) Vue `<script setup>` compiler macro for declaring
317+
* the render function.
318+
*
319+
* The first argument can be a JSX element or a render function.
320+
*
321+
* @example
322+
* ```ts
323+
* // JSX element
324+
* defineRender(<div>hello</div>)
325+
*
326+
* // Render function
327+
* defineRender(() => <div>hello</div>)
328+
* defineRender(() => h('div', 'hello'))
329+
* ```
330+
*/
331+
export function defineRender(renderFn: JSX.Element | RenderFunction): void {
332+
if (__DEV__) {
333+
warnRuntimeUsage('defineRender')
334+
}
335+
}
336+
314337
/**
315338
* Vue `<script setup>` compiler macro for providing props default values when
316339
* using type-based `defineProps` declaration.

packages/runtime-core/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export {
7272
defineOptions,
7373
defineSlots,
7474
defineModel,
75+
defineRender,
7576
withDefaults,
7677
useModel
7778
} from './apiSetupHelpers'

0 commit comments

Comments
 (0)