react 读路由 组件配置
import routes from '@/router/routes';
// import routes from 'config/routes';
console.log("routes");
console.log(routes);
const getComponents = (routes: any): any => {
let components: any[] = []
// console.log("routes");
// console.log(routes);
const recSearchComponents = (routes: any) => {
for (let route of routes) {
// console.log(a instanceof Array);//true
//
// console.log(route);
if (route.component) {
components.push(route.component)
}
// if(r.routers){
// recR(r.routers)
// }
if (route.routes) {
recSearchComponents(route.routes)
}
// routes
// if(r instanceof Array ){
// recR(r)
// }
}
}
recSearchComponents(routes)
return components
}
let components = getComponents(routes)
console.log("components");
console.log(components);
const makeProFormSelectOptions = (components: Array<any>) => {
// for(let o of components){
// }
let set = new Set(components)
// let arr=
// ts set to arr
// https://stackoverflow.com/questions/20069828/how-to-convert-set-to-array
// const array = [...mySet];
// https://www.csdn.net/tags/MtTaEgysMTEyOTkzLWJsb2cO0O0O.html
const array = [...set];
// let res= components.map(o=>{
let res = array.map(o => {
return {
label: o,
value: o
}
})
return res
}
let componentsOptio
ns = makeProFormSelectOptions(components)
<ProFormSelect
name="component"
label={intl.formatMessage({
id: 'system.Menu.component',
defaultMessage: '组件路径',
})}
placeholder="请输入组件路径"
request={async () => {
console.log("componentsOptions");
console.log(componentsOptions);
return componentsOptions
}
}
rules={[
{
required: false,
message: <FormattedMessage id="请输入组件路径!" defaultMessage="请输入组件路径!" />,
},
]}
/>