跳转到正文

RSegment ​

RSegment 用 Naive UI Tabs 的 segment 模式渲染选项。通过 value 和 onUpdateValue(或 v-model:value)切换业务状态,defaultValue 可提供非受控初值。页面内容由调用方根据值渲染。

属性默认说明
options[]RSegmentOptions[],每个选项的 key 需唯一。
width'fitContent''block' 占满、'fitContent' 按内容、数字按像素。
themeOverrides内置分段间距业务覆盖与内置配置浅合并。

每项必填 key: string \| number、label(文本、VNode 或渲染类型)。可用 disabled、icon(VNode 或函数)、popover(文本或含 label 的 Naive UI Popover 配置)、slots.default。虽然类型提供 displayDirective,当前实现没有把该字段传给选项,不能用它控制面板挂载。组件固定 type="segment" 与动画,不支持 Tabs 的增删页签、位置、Pane 样式等被排除字段。

tsx
import { RSegment, type RSegmentOptions } from "@/components";
import { defineComponent, ref } from "vue";

export default defineComponent({
  setup() {
    const selected = ref<string | number>("day");
    const options: RSegmentOptions[] = [
      { key: "day", label: "日", popover: "按日查看" },
      { key: "week", label: "周" },
    ];
    return () => (
      <RSegment
        options={options}
        value={selected.value}
        onUpdateValue={(value) => {
          selected.value = value;
        }}
      />
    );
  },
});

组件实现 · 选项类型 · 不支持的 Tabs 属性