当前位置:首页 > 编程笔记 > 正文
已解决

拒绝v-if判断组件显隐 tsx版本

来自网友在路上 161861提问 提问时间:2023-09-26 07:16:46阅读次数: 61

最佳答案 问答题库618位专家为你答疑解惑

定义组件map集合 根据map集合key值获取 进行组件展示

1。定义组件map集合

import {Input,Select,Radio,Checkbox,AutoComplete,Cascader,InputNumber,Switch,TreeSelect,Slider,Rate
} from 'ant-design-vue';
import {ref} from 'vue'
export const componentMap =ref(new Map<string, any>());componentMap.value.set('Input', Input);
componentMap.value.set('InputGroup', Input.Group);
componentMap.value.set('InputPassword', Input.Password);
componentMap.value.set('InputSearch', Input.Search);
componentMap.value.set('InputTextArea', Input.TextArea);
componentMap.value.set('InputNumber', InputNumber);
componentMap.value.set('AutoComplete', AutoComplete);componentMap.value.set('Select', Select);
componentMap.value.set('TreeSelect', TreeSelect);
componentMap.value.set('Switch', Switch);
componentMap.value.set('RadioGroup', Radio.Group);
componentMap.value.set('Checkbox', Checkbox);
componentMap.value.set('CheckboxGroup', Checkbox.Group);
componentMap.value.set('Cascader', Cascader);
componentMap.value.set('Slider', Slider);
componentMap.value.set('Rate', Rate);

2创建tsx 文件 封装通用组件

import { defineComponent, defineAsyncComponent, h } from 'vue';
import { componentMap } from './dataClassificationModal.data';
export default defineComponent({name: 'formItem',props: {component: {type: String,required: true,},componentProps: {type: Object,},},setup(props) {return () =>h(componentMap.value.get(props.component), {...props.componentProps,});},
});

3 组件内使用

<template><formItemv-for="item in formSchema ":component="item.component"v-bind="item.componentProps"v-model:value="formState[item.]"/>
</template>
<script setup lang="ts">import formItem from './formItem.tsx';const formSchema = [{field: 'name',component: 'Input',componentProps: {type: 'number',}]const componentProps = ref({type:'numer'
})
const formState = ref({})</script>
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"拒绝v-if判断组件显隐 tsx版本":http://eshow365.cn/6-13774-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!