构造函数在 "builder pattern" 中的 class 的多个实例中运行一次

Constructor runs once in multi-Instantiates of a class in "builder pattern" in react app

我的 React 应用程序中有一个 class,它使用 'Builder Pattern',我已将其导入我页面的一些嵌套组件中。例如在父组件和子组件中也是如此。

但它似乎调用了一次 class 的构造函数!在第二个实例化中,它具有我在预览实例化的预览中添加的现有数据。 (不是新的干净的实例化!)

// [Builder pattern] 
class Requester {
    constructor() {
        this.definedHeaders = {}
        console.log('construct', this)

    }

    contentType(contenttype) {
        this.definedHeaders['Content-Type'] = contenttype
        return this;
    }

    async get(url) {
        // ...
    }

    async post(url, data = {}, isFormData = false) {
         // ...
    }
}

export default new Requester();

ES 模块仅在第一次导入时评估一次。此特征对所有 JavaScript 模块实现都是通用的。

因此,导出 class 实例是使 class 成为单例的常用方法。 class 本身未导出可防止创建其他实例。

如果不想有单个实例,则应导出 class 本身:

export default class Requester {...}

并在使用它的地方实例化:

import Requester from '...';

const requester = new Requester;