我可以在没有 if/else 的情况下犯 3 种错误类型吗?
我需要显示 3 种类型的错误(它们有不同的位置):
- 常见的
- 错误登录
- 错误密码
我现在拥有的:我做了一个无渲染函数。我看到了两种方式:
在组件的模板中使用 if/else:
组件.vue
<login-error-renderless v-if="isError" :errorMessage="errorMessage" :rowClass="$style.errorLogin" :colClass="$style.errorInner" > </login-error-renderless> <login-error-renderless v-else-if="isError && messageList[1]" :errorMessage="errorMessage" :rowClass="$style.errorPassword" :colClass="$style.errorInner" > </login-error-renderless> <login-error-renderless v-else-if="isError && !messageList[0] && !messageList[1]" :errorMessage="errorMessage" :rowClass="$style.errorWrap" :colClass="$style.errorInner" > </login-error-renderless>
无渲染函数.vue
return h('div', { attrs: { class: this.rowClass } }, [
h('div', { attrs: { class: this.colClass} }, [
h('span', {}, this.errorMessage),
]),
- 在无渲染函数中使用 if/else(我现在正在使用它):
组件.vue
<login-error-renderless
v-if="isError"
:errorMessage="errorMessage"
:classList="classList"
:messageList = "messages"
>
</login-error-renderless>
无渲染.vue:
props: {
errorMessage: String,
classList: Object,
messageList: Array,
},
render(h) {
const createFunction = (rowClass, colClass = this.classList.innerClass) => h('div', { attrs: { class: rowClass } }, [
h('div', { attrs: { class: colClass } }, [
h('span', {}, this.errorMessage),
]),
]);
if (this.messageList[0] !== undefined) {
return createFunction(this.classList.errorLogin);
}
if (this.messageList[1] !== undefined) {
return createFunction(this.classList.errorPassword);
}
return createFunction(this.classList.error);
},