# 依赖注入

### Scope

在将Service连接到React组件的时候，我们可以设置当前Service的注入Scope，预设有：Singleton(单例，全局唯一实例)和Transient(新实例，当前全新的实例）,你也可以使用自定义的Scope，相同名称的Scope之间实例是一样的，否则是不同实例。

这里有一个自定义Scope的例子： <https://codesandbox.io/s/service-x-scope-8oool>

### Service 注入 Service

我们可以很方便的在一个Service里面注入另外一个Service以获得或修改另外一个Service中的数据。基本注入方式可以参考下面这个例子：<https://codesandbox.io/s/service-xinject-bvg63>

实际上，这个功能一般用于便捷获取公共组件中的Service

### Transient or Singleton ?

哪种注入方式好呢？这里没有一个绝对的标准：

如果选择了Transient，好处是比较纯粹，可以同时应用在不同组件中，复用逻辑。坏处是需要自己维护和传递当前的service实例。

Singleton相对来说较为简单点，不过需要注意：实例不能在不同组件中使用，同时也要注意及时清理State（推荐使用resetOnUnmount参数）
