Estoy usando la variable de rutas para devolver rutas a varias URL.
export const routes = { root: { path: '/' }, login: { path: '/login' }, users: { path: '/users'} }
Ahora, tengo que usarlo como route.login.path ahora. Pero, ¿hay alguna forma de que si no se pasa nada después del parámetro, tome 'ruta' de forma predeterminada? Algo como esto: route.login debería devolver automáticamente '/login'
Desea que routes.login
devuelva la cadena "/login"
y desea acceder a .path
a través de esa cadena. Le recomendaría que reconsidere la forma en que aborda este problema.
Sin embargo, hay dos maneras de lograr esto:
Una es asignar una propiedad de path
a cada cadena de la siguiente manera:
export const routes = { root: Object.assign('/', { get path() {return String(this)} }), login: Object.assign('/login', { get path() {return String(this)} }),, users: Object.assign('/users', { get path() {return String(this)} }), }
El otro es anular el método toString
del objeto:
export const routes = { root: { path: '/', toString() {return this.path} }, login: { path: '/login', toString() {return this.path} }, users: { path: '/users', toString() {return this.path} } }
Por supuesto, puede limpiar esto con una clase separada:
// First Method class Route extends String { get path() { return String(this) } } export const routes = { root: new Route('/'), login: new Route('/login'), users: new Route('/users') } // Second Method class Route { constructor(data) { Object.assign(this, data); } toString() { return this.path; } } export const routes = { root: new Route({ path: '/' }), login: new Route({ path: '/login' }), users: new Route({ path: '/users' }) }