Skip to content

vue 中的 tsx

tsx 模板

导出一个函数,返回 tsx 代码

tsx
export default defineComponent({
  setup() {
    return () => (
      <ConfigProvider locale={zhCN}>
        <RouterView />
      </ConfigProvider>
    );
  },
});

v-model

tsx 语法也可以使用 v-model 语法来绑定变量

tsx
<Popover
  v-model:visible={visible.value}
  trigger="click"
  placement="bottomRight"
/>

v-show

tsx 语法也可以使用 v-show 语法来绑定变量

tsx
<SearchForm loading={props.loading} v-show={showSerach.value} />

事件

tsx 语法统一把@符号变成 on+事件名称的格式

tsx
<SearchForm
  onSearch={(val: object) => emit("search", val)}
  onReset={(val: string) => emit("reset", val)}
/>

插槽

传统插槽语法:

html
<div class="container">
  <header>
    <slot name="header"></slot>
  </header>
  <main>
    <slot></slot>
  </main>
  <footer>
    <slot name="footer"></slot>
  </footer>
</div>

tsx 语法:

tsx
<Drawer
  width={props.width}
  v-slots={{
    default: slots.default,
    footer: () => (
      <Button class="mr-2" onClick={props.onCancel}>
          取消
      </Button>
    ),
  }}
/>

表单修饰符

html
<ProField {...attrs} v-model:value={{data.value[index]}}/>
tsx
<ProField {...attrs} v-model:value={[data.value[index],['trim']]}/>

注意

  • tsx组件只有一个根节点
  • tsx变量直接使用大括号,不需要使用v-bind
  • tsx在大括号中写代码语句,在圆括号中写jsx语法

杨利伟的博客