Setup 语法糖(推荐)
<template>
<div>{{ name }}</div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const name = ref("天气好");
</script>
<style scoped></style>
Vue2 选项式写法
经典写法
<template>
<div>{{ name }}</div>
</template>
<script lang="ts">
export default {
data: () => ({ name: "天气好" }),
};
</script>
结合 defineComponent
<template>
<div>{{ name }}</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
data: () => ({ name: "天气好" }),
});
</script>
Vue3 选项式写法
<template>
<div>{{ name }}</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
setup(prop, context) {
return { name: "天气好" };
},
});
</script>
手写渲染函数
基础写法
<script lang="ts">
import { defineComponent, h } from "vue";
export default defineComponent({
data: () => ({ name: "天气好" }),
render() {
return h("div", this.name);
},
});
</script>
Setup 返回渲染函数
<script lang="ts">
import { defineComponent, h, ref } from "vue";
export default defineComponent({
setup() {
const name = ref("天气好");
return () => h("div", name.value);
},
});
</script>
defineComponent 直接传入 Setup
<script lang="ts">
import { defineComponent, h, ref } from "vue";
export default defineComponent(() => {
const name = ref("天气好");
return () => h("div", name.value);
});
</script>
Vue & JSX
Render 中使用 JSX
<script lang="tsx">
import { defineComponent } from "vue";
export default defineComponent({
data: () => ({ name: "天气好" }),
render() {
return <div>{this.name}</div>;
},
});
</script>