用vue3.x+element-ui来写后台管理,自己二次封装了一个搜索栏组件,想搜索栏组件传递配置项数组实现组件的显示
需求:品类下拉框选择翡翠时才显示货品形态下拉框,如果不是翡翠,则隐藏货品形态下拉框
搜索栏组件传入配置项格式如下:
formOptions: [
{
label: ‘品类’,
prop: ‘productType’,
element: ‘el-select’,
initValue:’’,
options: [],
events:{
change:this.productTypeChange
}
},
{
// label: ‘货品形态’,
// prop: ‘ownerProductType’,
// element: ‘el-select’,
// initValue:’’,
// options: []
}
]

错误做法❌:配置项数组先不传货品形态的配置,给品类下拉框组件的配置项传递了一个change事件,当val为翡翠时,使用数组的slice方法为配置项数组的特定位置加入物品形态配置对象,当val不是翡翠时,使用数组的filter方法,过滤掉配置项数组中的物品形态这一项
导致的问题😢:重置时品类下拉框无法重置为初始值,如果去掉change事件处理函数内部的逻辑即可正常,但是这样就不能完成需求

正确做法✔👍:初始化时,把配置项数组中货品形态配置项设置为一个空对象,这样搜索栏就渲染不出来货品形态这一个下拉组件,给拼配配置项传递一个change事件,当value为翡翠时,把配置项数组中的货品形态这一项赋值为正常的配置项即可,当value不是翡翠时,再重新设置货品翔太配置项为一个空对象即可
解决问题😍:既实现了产品需求,又可以在重置时不出现上面的bug

注意:在重置时要记得把配置项中的货品形态配置项设置为空对象

以上只是我个人的解决思路,遇到同样问题的小伙伴又不知道如何解决的可以参考一下这个思路

Logo

前往低代码交流专区

更多推荐