vue3中使用jsx时的坑点与难点

252 阅读1分钟

1、jsx中如何使用插槽?

可以看这篇官方文档:cn.vuejs.org/guide/extra…

举个例子:在element-plus中:

<el-menu
    :default-active="activeIndex"
    class="el-menu-demo"
    mode="horizontal"
    @select="handleSelect"
  >
    <el-menu-item index="1">Processing Center</el-menu-item>
    <el-sub-menu index="2">
      <template #title>Workspace</template>
      <el-menu-item index="2-1">item one</el-menu-item>
      <el-menu-item index="2-2">item two</el-menu-item>
      <el-menu-item index="2-3">item three</el-menu-item>
      <el-sub-menu index="2-4">
        <template #title>item four</template>
        <el-menu-item index="2-4-1">item one</el-menu-item>
        <el-menu-item index="2-4-2">item two</el-menu-item>
        <el-menu-item index="2-4-3">item three</el-menu-item>
      </el-sub-menu>
    </el-sub-menu>
    <el-menu-item index="3" disabled>Info</el-menu-item>
    <el-menu-item index="4">Orders</el-menu-item>
  </el-menu>

转换为jsx就是:

<el-menu
          default-active={activeIndex.value}
          class="el-menu-demo"
          mode="horizontal"
          onSelect={handleSelect}>
          <el-menu-item index="1">Processing Center</el-menu-item>
          <el-sub-menu index="2">
            {{
              default: () => (
                <>
                  <el-menu-item index="2-1">item one</el-menu-item>
                  <el-menu-item index="2-2">item two</el-menu-item>
                  <el-menu-item index="2-3">item three</el-menu-item>
                  <el-sub-menu index="2-4">
                    {{
                      default: () => (
                        <>
                          <el-menu-item index="2-4-1">item one</el-menu-item>
                          <el-menu-item index="2-4-2">item two</el-menu-item>
                          <el-menu-item index="2-4-3">item three</el-menu-item>
                        </>
                      ),
                      title: () => '11111',
                    }}
                  </el-sub-menu>
                </>
              ),
              title: () => <strong style={{ color: 'red' }}>not easy</strong>,
            }}
          </el-sub-menu>
          <el-menu-item index="3" disabled>
            Info
          </el-menu-item>
          <el-menu-item index="4">Orders</el-menu-item>
        </el-menu>