You need to enable JavaScript to run this app. Vue.js不使用if/else怎么实现3种不同类型的错误提示展示?
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js不使用if/else怎么实现3种不同类型的错误提示展示?

无if/else实现方案

核心思路是用类名映射表匹配错误类型,通过数组下标定位对应样式,完全消除分支判断,逻辑和你现有实现完全对齐:

1. 无渲染组件(Renderless.vue)优化代码

props: {
  errorMessage: String,
  classList: Object,
  messageList: Array,
}, 
render(h) {
  // 按错误优先级定义类名映射数组,下标和messageList一一对应
  const errorClassMap = [this.classList.errorLogin, this.classList.errorPassword]
  // 按顺序匹配第一个存在的错误对应的类名,匹配失败则用通用错误类
  const targetRowClass = errorClassMap.find((_, idx) => this.messageList[idx] !== undefined) ?? this.classList.error

  return h('div', { attrs: { class: targetRowClass } }, [
    h('div', { attrs: { class: this.classList.innerClass } }, [
      h('span', {}, this.errorMessage),
    ]),
  ])
}

2. 父组件调用侧

无需修改,和你当前使用的写法完全一致:

<login-error-renderless
    v-if="isError"
    :errorMessage="errorMessage"
    :classList="classList"
    :messageList = "messages"
>
</login-error-renderless>

如果后续需要新增错误类型,只需要在errorClassMap数组的对应位置新增类名即可,不需要额外加分支判断,扩展性更强。


内容的提问来源于stack exchange,提问作者Алексей

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 16:12:04