假设我正在使用Redux编写应用程序,并被要求使用第三方库添加日志记录。它的API如下:
我会像这样使用该库:
function createLogger(token) {
// the logger has internal state!
let logCount = 0;
return {
log(payload) {
logCount++; // modify local state
fetch('/someapi', { // ship payload to some API
method: 'POST',
body: payload
});
}
};
}
我会像这样使用该库:
我会像这样使用该库:
let logger = createLogger('xyz');
logger.log('foobar');
我希望在应用程序初始化期间仅创建一次记录器实例。但问题是:我应该将日志记录器实例存储在哪里?
首先的想法是将其放在存储区中。但这样做是否明智呢?就像代码示例中所演示的那样,记录器对象具有状态,它在闭包中存储一个计数器。我不会像使用不可变对象那样获得新实例。正如我们所知,状态只能通过纯净的reducer函数进行修改。
其他可能性是在redux中间件闭包中的某个地方创建实例,或者只是创建全局变量,这显然对于可测试性来说是不好的。
对于这种(我认为)相当常见的情况是否有最佳实践呢?