我们可以在 ionic4 中使用 queryParams 吗?
Can we use queryParams in ionic4?
我们已将 queryParams
用于 angular 个项目。我们可以在 ionic 项目中使用 queryParams
吗?
有任何副作用或安全问题吗?
您可以使用 queryParams,但不推荐使用它,因为您将作为路由器 link 的一部分发送值。这也意味着您仅限于字符串,并且每次发送数据时都需要对对象进行字符串化 (JSON.stringify()) 和解析。
更好的选择是使用 Extras State:
let navigationExtras: NavigationExtras = {
state: {
userData: this.user
}
};
this.router.navigate(['my-page'], navigationExtras);
在MyPage中,通过在构造函数中注入Router从State获取数据:
this.data = this.router.getCurrentNavigation().extras.state.userData;
使用服务: 此外,您可以创建一个具有 getter 和 setter 的服务,您可以在导航前使用它来保存数据完成导航后取回:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class DataService {
private data = [];
constructor() { }
setData(id, data) {
this.data[id] = data;
}
getData(id) {
return this.data[id];
}
}
this.router.navigate(['your-page-name-here'], 参数);
我们已将 queryParams
用于 angular 个项目。我们可以在 ionic 项目中使用 queryParams
吗?
有任何副作用或安全问题吗?
您可以使用 queryParams,但不推荐使用它,因为您将作为路由器 link 的一部分发送值。这也意味着您仅限于字符串,并且每次发送数据时都需要对对象进行字符串化 (JSON.stringify()) 和解析。
更好的选择是使用 Extras State:
let navigationExtras: NavigationExtras = {
state: {
userData: this.user
}
};
this.router.navigate(['my-page'], navigationExtras);
在MyPage中,通过在构造函数中注入Router从State获取数据:
this.data = this.router.getCurrentNavigation().extras.state.userData;
使用服务: 此外,您可以创建一个具有 getter 和 setter 的服务,您可以在导航前使用它来保存数据完成导航后取回:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class DataService {
private data = [];
constructor() { }
setData(id, data) {
this.data[id] = data;
}
getData(id) {
return this.data[id];
}
}
this.router.navigate(['your-page-name-here'], 参数);