在模块中使用此关键字进行依赖项注入

时间:2019-05-04 21:00:51

标签: javascript node.js dependency-injection node-modules

我正在尝试创建一个依赖于初始化时传递的依赖项的节点模块包。以下代码表示我注入依赖项的方法。到目前为止,一切都很好。 auth.js有几个需要在程序包中调用的函数,但是我面临this为null的问题,因此我无法访问函数watchLogin

用法

import Store from 'store';

const store = new Store(config);
const rootSaga = store.rootSaga;

存储节点模块

index.js

import Module from "npm-module";
import AuthSaga from "auth.js"

export default class Store {
  constructor(config) {
    const dependency = Module(config);
    const authSaga = AuthSaga(dependency);

    this.rootSaga = function* rootSaga() {
      yield all([fork(authSaga.rootSaga)]);
    };
  }
}

auth.js

export default module.exports = (dependency) => {
  return {
    watchLogin: function* watchLogin() {
      const auth = dependency.auth();
      return yield call([auth, auth.signIn]);
    },
    rootSaga: function* rootSaga() {
      yield all([
        fork(this.watchLogin), // this is null
      ]);
    }
  }
};

我想知道这是否是解决我的最初问题,将依赖项注入程序包的正确方法。如果是这样,如何在模块中调用其他功能?

0 个答案:

没有答案