-
Notifications
You must be signed in to change notification settings - Fork 0
Conversation
src/store/auth.ts
Outdated
public readonly name = (): string | undefined => { | ||
return this._state.value.name; | ||
}; | ||
|
||
public readonly id = (): number | undefined => { | ||
return this._state.value.id; | ||
}; | ||
|
||
public readonly isClient = (): boolean | undefined => { | ||
return this._state.value.isClient; | ||
}; | ||
|
||
public readonly token = (): string | undefined => { | ||
return this._state.value.token; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Todo esto deberían de ser getters, de la siguiente forma:
public get token(): string {
return this._state.value.token;
}
Como lo has hecho, para acceder a la propiedad hay que hacer store.token()
en vez de store.token
, que es mucho más sencillo ya que estamos trabajando puramente como si de una variable se tratase (aunque en realidad sea una función), en vez de una función. En el mundo Java es que no tenemos otra manera que llamarla como si fuesen funciones, pero aquí tenemos esa ventaja :)
Otra manera en la que puedes hacerlo (que es la que acostumbro a utilizar en stores muy grandes donde se mezclan propiedades que son reactivas con con reactivas) es usar los computeds de vue. Así:
public readonly token = computed(() => this._state.value.token);
Así el tipo de TypeScript que tienen es ComputedRef<T>
(siendo T el tipo de la variable this._state.value.token
), lo cual hace unívoco que dicha variable es reactiva, lo que hace luego mucho más fácil la depuración de errores si vemos que, por algún motivo, algo que debe de reaccionar a un cambio de dicha variable no lo hace.
Otra cosa que te iba a decir es que el token no debería de ser público. Sólamente se va a utilizar dentro de la propia store y aunque durante la ejecución no existe protección de acceso real como ocurre en Java, a nivel de compilación evitamos malas prácticas de usar el token donde no se debe.
Deploying with
|
Latest commit: |
7ebed99
|
Status: | ✅ Deploy successful! |
Preview URL: | https://dda6d808.ocial-app.pages.dev |
Branch Preview URL: | https://feat-10-auth-store.ocial-app.pages.dev |
resuelve #10 a la espera del backend para completar la llamada de login y terminar de poner los campos necesarios de usuario
d4e4803
to
7ebed99
Compare
|
Resuelve #10 A la espera del backend para completar la llamada de login y terminar de poner los campos necesarios de usuario
Resuelve #10 A la espera del backend para completar la llamada de login y terminar de poner los campos necesarios de usuario
resuelve #10
a la espera del backend para completar la llamada de login y terminar de poner los campos necesarios de usuario