我检查了 redux 工具包文档,但没有看到此典型用例的示例:不发送具有无效参数的查询请求。
例如,对端点 /categories/{name} 的 get 请求需要名称值。如果名称没有值,则不应发出请求。
const baseQuery = fetchBaseQuery({
baseUrl: Constants.PATHWAY_API_URL
});
export const pathwayApi = createApi({
reducerPath: 'pathwayApi',
baseQuery: baseQueryWithReAuth,
endpoints: builder => ({
getSubCategories: builder.query({
// NETWORK REQUEST SHOULD NOT BE MADE IF "name" param is falsy
query: name => `${Constants.PATHWAY_API.CATEGORIES_PATH_NAME}/${name}`,
}),
}),
});
Run Code Online (Sandbox Code Playgroud)
我想将这种类型的参数验证添加到需要一个或多个参数值的所有查询中。在 createApi (或可能是 fetchBaseQuery)层处理此验证的推荐方法/模式是什么?提前致谢!
我需要检查每个页面请求上的请求标头。我认为可以在“撇号-表达”模块中进行尝试。我创建了自己的模块'auth',该模块扩展了'apostrophe-express':
module.exports = {
extend: 'apostrophe-express',
name: 'auth',
alias: 'auth',
absoluteUrl: function(req, res, next){
console.log(req);
}
};
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。我收到错误信息'apostrophe-templates \ index.js“ 597 req.browserCall('apos.pageReadywhenCalm($(” body“));')'
您能告诉我我应该在每个页面请求中加入哪些位置以运行一些自定义检查/规则(例如,如果不存在某个Cookie,然后将用户重定向到其他站点)?
谢谢!
我发现这个 d3 示例显示了带有纯色背景和对角线图案的条形图。我试图通过修改“d”属性来修改它以显示点、实心、白色圆圈而不是线条,但我认为可能有更好的方法来做到这一点。
这是我的小提琴显示对角线:
http://jsfiddle.net/ljp007/gruc1vod/1/
var svg = d3.select("body").append("svg");
svg
.append('defs')
.append('pattern')
.attr('id', 'diagonalHatch')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', 4)
.attr('height', 4)
.append('path')
.attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')
.attr('stroke', '#fff')
.attr('stroke-width', 1);
svg.append("rect")
.attr("x", 0)
.attr("width", 100)
.attr("height", 100)
.style("fill", 'blue');
svg.append("rect")
.attr("x", 0)
.attr("width", 100)
.attr("height", 100)
.attr('fill', 'url(#diagonalHatch)');
Run Code Online (Sandbox Code Playgroud)
这就是我想要实现的目标:
这些点不绘制数据,只是为了外观以将该条与图表中的其他条区分开来。如何将线转换为点以实现此目的?
我正在尝试使用我的 Angular 6 应用程序实现数据缓存,ReplaySubject
但不确定ReplaySubject
观察者的规模不断增长是否是一个问题。
在我的 data.service 中,我正在检查是否有任何现有的观察者。如果是这样,我将返回对 的引用ReplaySubject
以获取“缓存”值。如果没有,我会发出网络请求以获取数据并将数据添加到ReplaySubject
.
// data.service.ts
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class DataService {
private dataObs$ = new ReplaySubject<any>();
constructor(private http: HttpClient) {
}
getData(forceRefresh?: boolean): any {
// return last value (i.e. cache) from ReplaySubject or add data to it
if (!this.dataObs$.observers.length || forceRefresh) {
console.log('network request')
this.dataObs$.next(this.http.get('https://jsonplaceholder.typicode.com/todos/1'));
}
console.log('# of Observers …
Run Code Online (Sandbox Code Playgroud)