问题描述:
在使用Apollo Angular时,当数据发生变更后,调用watchQuery
方法无法获取最新数据。
解决方案:
refetchQueries
选项来手动触发重新获取数据。在调用watchQuery
方法时,可以通过refetchQueries
选项来指定需要重新获取的查询。import { Apollo } from 'apollo-angular';
// ...
export class MyComponent {
constructor(private apollo: Apollo) {}
myQuery = gql`...`; // 定义你的查询语句
fetchData() {
this.apollo.watchQuery({
query: this.myQuery,
refetchQueries: [{ query: this.myQuery }],
}).valueChanges.subscribe(result => {
// 处理获取到的数据
});
}
}
refetch
方法手动触发重新获取数据。在调用watchQuery
方法后,可以通过订阅返回的QueryRef
对象,然后调用refetch
方法来手动触发重新获取数据。import { Apollo } from 'apollo-angular';
import { QueryRef } from 'apollo-angular/types';
// ...
export class MyComponent {
private queryRef: QueryRef; // 声明一个QueryRef对象
constructor(private apollo: Apollo) {}
myQuery = gql`...`; // 定义你的查询语句
fetchData() {
this.queryRef = this.apollo.watchQuery({
query: this.myQuery,
});
this.queryRef.valueChanges.subscribe(result => {
// 处理获取到的数据
});
}
refetchData() {
this.queryRef.refetch(); // 调用refetch方法重新获取数据
}
}
这样,当数据发生变更时,你可以调用refetchData
方法来手动触发重新获取数据。
希望这些解决方法对你有帮助!