以下两段代码,第一段使用filter过滤的时候没有成功过滤,但是第二段代码可以,其中generateRoutes函数执行后,要么返回undefined,要么返回一个RouteRecordRaw的对象,第一段代码filter是有什么地方有错误么?
const menus = computed(() =>
user.value?.username === config.superadmin
? routes
: routes.filter(route =>
generateRoutes(
'',
{ ...route },
user.value?.role?.menus || [],
user.value?.role?.buttons || []
)
)
)
const menus = computed(() => {
if (user.value?.username === config.superadmin) return routes
const result: RouteRecordRaw[] = []
for (const route of routes) {
const item = generateRoutes(
'',
{ ...route },
user.value?.role?.menus || [],
user.value?.role?.buttons || []
)
if (item) {
result.push(item)
}
}
return result
})
generateRoutes函数显式返回一个false也不能成功过滤
最好还是把功能处理放到computed外面吧,看着很头疼。
放到外面肯定不会出现这种情况的