Size: a a a

Ionic - русскоговорящее сообщество

2020 October 02

Ć

Ć¥β€ŘŇΔŦƗĆ... in Ionic - русскоговорящее сообщество
храню стейты в сервисах
источник

Ć

Ć¥β€ŘŇΔŦƗĆ... in Ionic - русскоговорящее сообщество
а восстанавливаю из локалсторейдж
источник

I

Igor in Ionic - русскоговорящее сообщество
Ну просто их в нативе как бы вообще нет, и обходятся :)
источник

J

Jean in Ionic - русскоговорящее сообщество
Привет. Помогите разобраться в ангуляровском роутере.
У меня есть компонент, который обрабатывает 3 роута.

const routes: Routes = [
 {
   path: ':authorId/categories/:categoryId/books/:bookId',
   component: AuthorsComponent
 },
 {
   path: ':authorId/categories/:categoryId',
   component: AuthorsComponent
 },
 {
   path: ':authorId',
   component: AuthorsComponent
 }
]

Проблема в том, что когда я переключаюсь между этими роутами, компонент пересоздается, а вроде Ангуляр должен переиспользовать этот компонент не уничтожая его.
Компонент не пересоздается только тогда, когда меняю bookId. Если меняю автора или категорию, то блин компонент дестроится.
По роутам перехожу через this.router.navigate([`${authorId}/categories/${categoryId}/books/${bookId}`]).

Может кто сталкивался с такой проблемой?
источник

G

Genady in Ionic - русскоговорящее сообщество
Jean
Привет. Помогите разобраться в ангуляровском роутере.
У меня есть компонент, который обрабатывает 3 роута.

const routes: Routes = [
 {
   path: ':authorId/categories/:categoryId/books/:bookId',
   component: AuthorsComponent
 },
 {
   path: ':authorId/categories/:categoryId',
   component: AuthorsComponent
 },
 {
   path: ':authorId',
   component: AuthorsComponent
 }
]

Проблема в том, что когда я переключаюсь между этими роутами, компонент пересоздается, а вроде Ангуляр должен переиспользовать этот компонент не уничтожая его.
Компонент не пересоздается только тогда, когда меняю bookId. Если меняю автора или категорию, то блин компонент дестроится.
По роутам перехожу через this.router.navigate([`${authorId}/categories/${categoryId}/books/${bookId}`]).

Может кто сталкивался с такой проблемой?
Ну все логично! 1 раут - 1 компонент. Иначе не возможно.
источник
2020 October 03

G

Genady in Ionic - русскоговорящее сообщество
Вопрос , как мне использовать localStorage в HttpInterceptor, из-за того что он возвращает Promise, я не могу изменить headers. А превратить его в синхронный. Как тоже не выходит.
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
Genady
Вопрос , как мне использовать localStorage в HttpInterceptor, из-за того что он возвращает Promise, я не могу изменить headers. А превратить его в синхронный. Как тоже не выходит.
export class UserHttpInterceptor implements HttpInterceptor {

 constructor(private storage: Storage) {
 }


 intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
   if (request.url.includes(API_URL)) {
     return from(this.handleAccess(request, next));
   }
   return next.handle(request);
 }

 private async handleAccess(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
   const token = await this.storage.get('STORAGE_KEY_TOKEN');
   if (token) {
     request = request.clone({
       setHeaders: {
         Authorization: Bearer ${token}
       }
     });
   }
   return next.handle(request).toPromise();
 }
}
источник

G

Genady in Ionic - русскоговорящее сообщество
OsBen Евгений
export class UserHttpInterceptor implements HttpInterceptor {

 constructor(private storage: Storage) {
 }


 intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
   if (request.url.includes(API_URL)) {
     return from(this.handleAccess(request, next));
   }
   return next.handle(request);
 }

 private async handleAccess(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
   const token = await this.storage.get('STORAGE_KEY_TOKEN');
   if (token) {
     request = request.clone({
       setHeaders: {
         Authorization: Bearer ${token}
       }
     });
   }
   return next.handle(request).toPromise();
 }
}
Спасибо. Но Storage он же только с capacitor работает. Я знаю что это не имеет значения в данном примере. Но зачем 2 разных api?
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
Genady
Спасибо. Но Storage он же только с capacitor работает. Я знаю что это не имеет значения в данном примере. Но зачем 2 разных api?
1 - прошу ознакомится https://ionicframework.com/docs/angular/storage
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
2 - не рекомендую юзать localStorage
источник

G

Genady in Ionic - русскоговорящее сообщество
OsBen Евгений
2 - не рекомендую юзать localStorage
Да, я понял что он не кроссплатформенный
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
почему же ?
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
источник

G

Genady in Ionic - русскоговорящее сообщество
Тогда почему везде его не советуют?
источник

G

Genady in Ionic - русскоговорящее сообщество
OsBen Евгений
export class UserHttpInterceptor implements HttpInterceptor {

 constructor(private storage: Storage) {
 }


 intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
   if (request.url.includes(API_URL)) {
     return from(this.handleAccess(request, next));
   }
   return next.handle(request);
 }

 private async handleAccess(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
   const token = await this.storage.get('STORAGE_KEY_TOKEN');
   if (token) {
     request = request.clone({
       setHeaders: {
         Authorization: Bearer ${token}
       }
     });
   }
   return next.handle(request).toPromise();
 }
}
Спасибо решение работает.
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
Почему не рекомендую:
1 - ionic/cordova в качестве области видимости во веб-вю юзает http://localhost/ условно, и область видимости ваших данных со всех http://localhost/ то есть одно приложение видит данные другого.
п.с. это было исправлено
2 - так же бывает ерорит при превышении квоты, но к примеру вы ее не занимали.
3 - механизм версий\моделей намного удобнее поддерживать через storage
источник

G

Genady in Ionic - русскоговорящее сообщество
OsBen Евгений
Почему не рекомендую:
1 - ionic/cordova в качестве области видимости во веб-вю юзает http://localhost/ условно, и область видимости ваших данных со всех http://localhost/ то есть одно приложение видит данные другого.
п.с. это было исправлено
2 - так же бывает ерорит при превышении квоты, но к примеру вы ее не занимали.
3 - механизм версий\моделей намного удобнее поддерживать через storage
Спасибо, можно по-больше информации по 3му пункту?
источник

O

OsBen Евгений in Ionic - русскоговорящее сообщество
по линку посмотрите какие методы вам доступны keys(), forEach()
источник

G

Genady in Ionic - русскоговорящее сообщество
Понял, спасибо
источник
2020 October 04

LZ

Liza Zharova in Ionic - русскоговорящее сообщество
✅Всем доброе утро и хороших выходных!
Меня зовут Елизавета и я занимаюсь проектом - сервис подбора технических менторов.  Сейчас мы ищем новых менторов, которые могли бы подключиться к нашему ресурсу.

На данный момент большой спрос на специалиста со знаниями Ionic+платежи.

Студенты задают такие вопросы:
1. событие updated у this.store.when(subcriptionID) отрабатывает каждую инициализацию store несколько раз. и только в последнем событии содержится верная информация о подписке (т.е. owned: true)
2. что можно сделать что бы отловить событие с актуальной инфой?
3. не срабатывает событие отмена подписки в маркете. (cancel, refunded )
4. порой наблюдаются лаги в оформлении подписки на Андроиде и ИОС, как бороться?
5. у отмененной подписки наблюдается статус owned: true - как с этим бороться?


Если вы хотите прокачаться как наставник, то пишите мне. Буду рада рассказать больше!
источник